ConvertTo-SecureString

Converte il testo normale o le stringhe crittografate in stringhe sicure.

Sintassi

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

Descrizione

Il ConvertTo-SecureString cmdlet converte le stringhe standard crittografate in stringhe sicure. Può anche convertire testo normale in stringhe sicure. Viene usato con ConvertFrom-SecureString e Read-Host. La stringa sicura creata dal cmdlet può essere usata con cmdlet o funzioni che richiedono un parametro di tipo SecureString. La stringa sicura può essere convertita in una stringa standard crittografata usando il ConvertFrom-SecureString cmdlet . In questo modo, può essere archiviata in un file per essere usata successivamente.

Se la stringa standard da convertire è stata crittografata con ConvertFrom-SecureString usando una chiave specificata, è necessario specificare la stessa chiave come valore del parametro Key o SecureKey del ConvertTo-SecureString cmdlet.

Nota

Si noti che per DotNet, il contenuto di secureString non viene crittografato nei sistemi non Windows.

Esempio

Esempio 1: Convertire una stringa sicura in una stringa crittografata

Questo esempio illustra come creare una stringa sicura dall'input dell'utente, convertire la stringa sicura in una stringa standard crittografata e quindi riconvertire la stringa standard crittografata in una stringa sicura.

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

Il primo comando usa il parametro AsSecureString del Read-Host cmdlet per creare una stringa sicura. Dopo aver immesso il comando, tutti i caratteri digitati vengono convertiti in una stringa sicura e quindi salvati nella $Secure variabile.

Il secondo comando visualizza il contenuto della $Secure variabile. Poiché la $Secure variabile contiene una stringa sicura, PowerShell visualizza solo il tipo System.Security.SecureString .

Il terzo comando usa il ConvertFrom-SecureString cmdlet per convertire la stringa protetta nella variabile in $Secure una stringa standard crittografata. Salva il risultato nella $Encrypted variabile.

Il quarto comando visualizza la stringa crittografata nel valore della $Encrypted variabile.

Il quinto comando usa il ConvertTo-SecureString cmdlet per convertire nuovamente la stringa standard crittografata nella $Encrypted variabile in una stringa sicura. Salva il risultato nella $Secure2 variabile. Il sesto comando visualizza il valore della $Secure2 variabile. Il tipo SecureString indica che il comando è riuscito.

Esempio 2: Creare una stringa sicura da una stringa crittografata in un file

Questo esempio illustra come creare una stringa sicura da una stringa standard crittografata salvata in un file.

$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)

Il primo comando usa il parametro AsSecureString del Read-Host cmdlet per creare una stringa sicura. Dopo aver immesso il comando, tutti i caratteri digitati vengono convertiti in una stringa sicura e quindi salvati nella $Secure variabile.

Il secondo comando usa il ConvertFrom-SecureString cmdlet per convertire la stringa protetta nella variabile in $Secure una stringa standard crittografata usando la chiave specificata. Il contenuto viene salvato nella $Encrypted variabile .

Il terzo comando usa un operatore pipeline (|) per inviare il valore della $Encrypted variabile al Set-Content cmdlet , che salva il valore nel file Encrypted.txt.

Il quarto comando usa il Get-Content cmdlet per ottenere la stringa standard crittografata nel file Encrypted.txt. Il comando usa un operatore pipeline per inviare la stringa crittografata al ConvertTo-SecureString cmdlet , che la converte in una stringa sicura usando la chiave specificata. I risultati vengono salvati nella $Secure2 variabile .

Esempio 3: Convertire una stringa di testo normale in una stringa sicura

Questo comando converte la stringa di testo normale in una stringa P@ssW0rD! sicura e archivia il risultato nella $Secure_String_Pwd variabile.

A partire da PowerShell 7, il parametro Force non è obbligatorio quando si usa il parametro AsPlainText . Tuttavia, l'inclusione del parametro Force garantisce che l'istruzione sia compatibile con le versioni precedenti.

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

Attenzione

È consigliabile evitare di usare stringhe di testo semplice negli script o dalla riga di comando. Il testo normale può essere visualizzato nei registri eventi e nei log della cronologia dei comandi.

Parametri

-AsPlainText

Specifica una stringa di testo normale da convertire in stringa sicura. I cmdlet per le stringhe sicure consentono di proteggere il testo riservato. Il testo viene crittografato per la privacy ed eliminato dalla memoria del computer dopo l'uso. Se si usa questo parametro per fornire testo normale come input, l'input non potrà essere protetto dal sistema.

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

-Force

A partire da PowerShell 7, il parametro Force non è più necessario quando si usa il parametro AsPlainText . Anche se il parametro non viene usato, non è stato rimosso per garantire la compatibilità con le versioni precedenti di PowerShell.

Type:SwitchParameter
Position:2
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Key

Specifica la chiave di crittografia utilizzata per convertire la stringa protetta originale nella stringa standard crittografata. Le lunghezze di chiave valide sono 16, 24 e 32 byte.

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

-SecureKey

Specifica la chiave di crittografia utilizzata per convertire la stringa protetta originale nella stringa standard crittografata. La chiave deve essere fornita nel formato di stringa sicura. La stringa protetta verrà convertita in una matrice di byte da usare come chiave. Le lunghezze valide delle chiavi sicure sono 8, 12 e 16 punti di codice.

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

-String

Specifica la stringa da convertire in stringa sicura.

Type:String
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

Input

String

È possibile inviare tramite pipe una stringa crittografata standard a questo cmdlet.

Output

SecureString

Questo cmdlet restituisce l'oggetto SecureString creato.

Note

Alcuni caratteri, ad esempio emoticon, corrispondono a diversi punti di codice nella stringa che li contiene. Evitare di usare questi caratteri perché possono causare problemi e incomprensioni quando vengono usati in una password.