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
Puede canalizar una cadena cifrada estándar a este cmdlet.
Salidas
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.