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 cmdlet ConvertTo-SecureString
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 protetta 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 cmdlet ConvertFrom-SecureString
. In questo modo può essere archiviato in un file per un uso successivo.
Se la stringa standard da convertire è stata crittografata con ConvertFrom-SecureString
utilizzando una chiave specificata, è necessario specificare la stessa chiave come valore del key o parametro SecureKey del cmdlet ConvertTo-SecureString
.
Nota
Per ulteriori informazioni sulla protezione dei dati di SecureString, vedere How secure is SecureString?.
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 protetta in una stringa standard crittografata e quindi convertire nuovamente 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 cmdlet Read-Host
per creare una stringa protetta. Dopo aver immesso il comando, tutti i caratteri digitati vengono convertiti in una stringa sicura e quindi salvati nella variabile $Secure
.
Il secondo comando visualizza il contenuto della variabile $Secure
. Poiché la variabile $Secure
contiene una stringa protetta, PowerShell visualizza solo il tipo di System.Security.SecureString.
Il terzo comando usa il cmdlet ConvertFrom-SecureString
per convertire la stringa protetta nella variabile $Secure
in una stringa standard crittografata. Salva il risultato nella variabile $Encrypted
.
Il quarto comando visualizza la stringa crittografata nel valore della variabile $Encrypted
.
Il quinto comando usa il cmdlet ConvertTo-SecureString
per convertire nuovamente la stringa standard crittografata nella variabile $Encrypted
in una stringa protetta. Salva il risultato nella variabile $Secure2
. Il sesto comando visualizza il valore della variabile $Secure2
. Il tipo SecureString indica che il comando ha avuto esito positivo.
Esempio 2: Creare una stringa sicura da una stringa crittografata in un file
In questo esempio viene illustrato 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 cmdlet Read-Host
per creare una stringa protetta. Dopo aver immesso il comando, tutti i caratteri digitati vengono convertiti in una stringa sicura e quindi salvati nella variabile $Secure
.
Il secondo comando usa il cmdlet ConvertFrom-SecureString
per convertire la stringa protetta nella variabile $Secure
in una stringa standard crittografata usando la chiave specificata. Il contenuto viene salvato nella variabile $Encrypted
.
Il terzo comando usa un operatore pipeline (|
) per inviare il valore della variabile $Encrypted
al cmdlet Set-Content
, che salva il valore nel file Encrypted.txt.
Il quarto comando usa il cmdlet Get-Content
per ottenere la stringa standard crittografata nel file Encrypted.txt. Il comando usa un operatore pipeline per inviare la stringa crittografata al cmdlet ConvertTo-SecureString
, che lo converte in una stringa sicura usando la chiave specificata.
I risultati vengono salvati nella variabile $Secure2
.
Esempio 3: Convertire una stringa di testo normale in una stringa sicura
Questo comando converte la stringa di testo normale P@ssW0rD!
in una stringa sicura e archivia il risultato nella variabile $Secure_String_Pwd
.
A partire da PowerShell 7, il parametro Force non è necessario 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
Cautela
È consigliabile evitare di usare stringhe di testo normale nello 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 una stringa sicura. I cmdlet delle stringhe sicure consentono di proteggere il testo riservato. Il testo viene crittografato per la privacy e viene eliminato dalla memoria del computer dopo l'uso. Se si usa questo parametro per fornire testo normale come input, il sistema non può proteggere tale input in questo modo.
Tipo: | SwitchParameter |
Posizione: | 1 |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | 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.
Tipo: | SwitchParameter |
Posizione: | 2 |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | 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.
Tipo: | Byte[] |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-SecureKey
Specifica la chiave di crittografia utilizzata per convertire la stringa protetta originale nella stringa standard crittografata. La chiave deve essere specificata nel formato di una stringa protetta. 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.
Tipo: | SecureString |
Posizione: | 1 |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-String
Specifica la stringa da convertire in una stringa sicura.
Tipo: | String |
Posizione: | 0 |
Valore predefinito: | None |
Necessario: | True |
Accettare l'input della pipeline: | True |
Accettare caratteri jolly: | 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.