Compartir a través de


ConvertTo-SecureString

Convierte cadenas cifradas o texto sin formato en cadenas seguras.

Syntax

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

Description

El ConvertTo-SecureString cmdlet convierte las 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 ConvertFrom-SecureString cmdlet . Esto permite almacenarla en un archivo para usarla más adelante.

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

Nota:

Tenga en cuenta que por DotNet, el contenido de secureString no se cifra en sistemas que no son de Windows.

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 cifrada estándar y, a continuación, volver a convertir la cadena cifrada estándar 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 Read-Host cmdlet 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 $Secure variable.

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

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

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

El quinto comando usa el ConvertTo-SecureString cmdlet para convertir la cadena estándar cifrada de la $Encrypted variable en una cadena segura. Guarda el resultado en la $Secure2 variable . El sexto comando muestra el valor de la $Secure2 variable. El tipo SecureString indica que el comando se ejecutó 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 cifrada estándar 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 Read-Host cmdlet 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 $Secure variable.

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

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

El cuarto comando usa el Get-Content cmdlet 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 ConvertTo-SecureString cmdlet , que lo convierte en una cadena segura mediante la clave especificada. Los resultados se guardan en la $Secure2 variable .

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

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

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

Precaución

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 para convertirla en una cadena segura. Los cmdlets de cadena segura ayudan a proteger los textos confidenciales. El texto se cifra para proteger su privacidad y se elimina de la memoria del equipo una vez que se ha utilizado. Si utiliza este parámetro para proporcionar texto sin formato como entrada, el sistema no puede proteger esa entrada de esta manera.

Type:SwitchParameter
Position:1
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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.

Type:SwitchParameter
Position:2
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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.

Type:Byte[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-SecureKey

Especifica la clave de cifrado utilizada para convertir la cadena segura original en la cadena estándar cifrada. La clave se debe proporcionar en formato de 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.

Type:SecureString
Position:1
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-String

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

Type:String
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters: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.