Compartir a través de


ConvertTo-SecureString

Convierte cadenas cifradas o texto sin formato en cadenas seguras.

Sintaxis

ConvertTo-SecureString
              [-String] <String>
              [[-SecureKey] <SecureString>]
              [<CommonParameters>]
ConvertTo-SecureString
              [-String] <String>
              [-AsPlainText]
              [-Force]
              [<CommonParameters>]
ConvertTo-SecureString
              [-String] <String>
              [-Key <Byte[]>]
              [<CommonParameters>]

Description

El cmdlet ConvertTo-SecureString convierte cadenas estándar cifradas en cadenas seguras. También puede convertir texto sin formato en cadenas seguras. Se usa con ConvertFrom-SecureString y Read-Host. La cadena segura creada por el cmdlet se puede usar con cmdlets o funciones que requieren un parámetro de tipo SecureString. La cadena segura se puede convertir a una cadena estándar cifrada mediante el cmdlet ConvertFrom-SecureString. Esto permite almacenarlo en un archivo para su uso posterior.

Si la cadena estándar que se va a convertir se cifró con ConvertFrom-SecureString mediante una clave especificada, se debe proporcionar la misma clave que el valor del Key o parámetro SecureKey del cmdlet ConvertTo-SecureString.

Nota

Para obtener más información sobre la protección de datos de SecureString, consulte ¿Es seguro SecureString?

Ejemplos

Ejemplo 1: Convertir una cadena segura en una cadena cifrada

En este ejemplo se muestra cómo crear una cadena segura a partir de la entrada del usuario, convertir la cadena segura en una cadena estándar cifrada y, a continuación, volver a convertir la cadena estándar cifrada en una cadena segura.

PS C:\> $Secure = Read-Host -AsSecureString
PS C:\> $Secure
System.Security.SecureString
PS C:\> $Encrypted = ConvertFrom-SecureString -SecureString $Secure
PS C:\> $Encrypted
01000000d08c9ddf0115d1118c7a00c04fc297eb010000001a114d45b8dd3f4aa11ad7c0abdae98000000000
02000000000003660000a8000000100000005df63cea84bfb7d70bd6842e7efa79820000000004800000a000
000010000000f10cd0f4a99a8d5814d94e0687d7430b100000008bf11f1960158405b2779613e9352c6d1400
0000e6b7bf46a9d485ff211b9b2a2df3bd6eb67aae41
PS C:\> $Secure2 = ConvertTo-SecureString -String $Encrypted
PS C:\> $Secure2
System.Security.SecureString

El primer comando usa el parámetro AsSecureString del cmdlet Read-Host para crear una cadena segura. Después de escribir el comando, los caracteres que escriba se convertirán en una cadena segura y, a continuación, se guardarán en la variable $Secure.

El segundo comando muestra el contenido de la variable $Secure. Dado que la variable $Secure contiene una cadena segura, PowerShell solo muestra el tipo de System.Security.SecureString.

El tercer comando usa el cmdlet ConvertFrom-SecureString para convertir la cadena segura en la variable $Secure en una cadena estándar cifrada. Guarda el resultado en la variable $Encrypted.

El cuarto comando muestra la cadena cifrada en el valor de la variable $Encrypted.

El quinto comando usa el cmdlet ConvertTo-SecureString para convertir la cadena estándar cifrada de la variable $Encrypted en una cadena segura. Guarda el resultado en la variable $Secure2. El sexto comando muestra el valor de la variable $Secure2. El tipo SecureString indica que el comando se realizó correctamente.

Ejemplo 2: Creación de una cadena segura a partir de una cadena cifrada en un archivo

En este ejemplo se muestra cómo crear una cadena segura a partir de una cadena estándar cifrada que se guarda en un archivo.

$Secure = Read-Host -AsSecureString
$Encrypted = ConvertFrom-SecureString -SecureString $Secure -Key (1..16)
$Encrypted | Set-Content Encrypted.txt
$Secure2 = Get-Content Encrypted.txt | ConvertTo-SecureString -Key (1..16)

El primer comando usa el parámetro AsSecureString del cmdlet Read-Host para crear una cadena segura. Después de escribir el comando, los caracteres que escriba se convertirán en una cadena segura y, a continuación, se guardarán en la variable $Secure.

El segundo comando usa el cmdlet ConvertFrom-SecureString para convertir la cadena segura en la variable $Secure en una cadena estándar cifrada mediante la clave especificada. El contenido se guarda en la variable $Encrypted.

El tercer comando usa un operador de canalización (|) para enviar el valor de la variable $Encrypted al cmdlet Set-Content, que guarda el valor en el archivo Encrypted.txt.

El cuarto comando usa el cmdlet Get-Content para obtener la cadena estándar cifrada en el archivo Encrypted.txt. El comando usa un operador de canalización para enviar la cadena cifrada al cmdlet ConvertTo-SecureString, que lo convierte en una cadena segura mediante la clave especificada. Los resultados se guardan en la variable $Secure2.

Ejemplo 3: Convertir una cadena de texto sin formato en una cadena segura

Este comando convierte la cadena de texto sin formato P@ssW0rD! en una cadena segura y almacena el resultado en la variable $Secure_String_Pwd.

A partir de PowerShell 7, el parámetro Force no es necesario cuando se usa el parámetro AsPlainText. Sin embargo, incluir el parámetro Force garantiza que la instrucción sea compatible con versiones anteriores.

$Secure_String_Pwd = ConvertTo-SecureString "P@ssW0rD!" -AsPlainText -Force

Cautela

Debe evitar el uso de cadenas de texto sin formato en el script o desde la línea de comandos. El texto sin formato puede aparecer en los registros de eventos y los registros del historial de comandos.

Parámetros

-AsPlainText

Especifica una cadena de texto sin formato que se va a convertir en una cadena segura. Los cmdlets de cadena segura ayudan a proteger los textos confidenciales. El texto se cifra para la privacidad y se elimina de la memoria del equipo después de usarlo. Si usa este parámetro para proporcionar texto sin formato como entrada, el sistema no puede proteger esa entrada de esta manera.

Tipo:SwitchParameter
Posición:1
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-Force

A partir de PowerShell 7, el parámetro Force ya no es necesario cuando se usa el parámetro AsPlainText. Aunque no se usa el parámetro , no se quitó para proporcionar compatibilidad con versiones anteriores de PowerShell.

Tipo:SwitchParameter
Posición:2
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-Key

Especifica la clave de cifrado utilizada para convertir la cadena segura original en la cadena estándar cifrada. Las longitudes de clave válidas son de 16, 24 y 32 bytes.

Tipo:Byte[]
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-SecureKey

Especifica la clave de cifrado utilizada para convertir la cadena segura original en la cadena estándar cifrada. La clave debe proporcionarse en el formato de una cadena segura. La cadena segura se convertirá en una matriz de bytes que se usará como clave. Las longitudes de clave seguras válidas son 8, 12 y 16 puntos de código.

Tipo:SecureString
Posición:1
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-String

Especifica la cadena que se va a convertir en una cadena segura.

Tipo:String
Posición:0
Valor predeterminado:None
Requerido:True
Aceptar entrada de canalización:True
Aceptar caracteres comodín:False

Entradas

String

Puede canalizar una cadena cifrada estándar a este cmdlet.

Salidas

SecureString

Este cmdlet devuelve el objeto SecureString creado.

Notas

Algunos caracteres, como emoticonos, corresponden a varios puntos de código de la cadena que los contiene. Evite usar estos caracteres porque pueden causar problemas y malentendidos cuando se usan en una contraseña.