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
È possibile inviare tramite pipe una stringa crittografata standard a questo cmdlet.
Output
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.