ConvertTo-SecureString
Konwertuje zwykły tekst lub zaszyfrowane ciągi na bezpieczne ciągi.
Składnia
ConvertTo-SecureString
[-String] <String>
[[-SecureKey] <SecureString>]
[<CommonParameters>]
ConvertTo-SecureString
[-String] <String>
[-AsPlainText]
[-Force]
[<CommonParameters>]
ConvertTo-SecureString
[-String] <String>
[-Key <Byte[]>]
[<CommonParameters>]
Opis
Polecenie ConvertTo-SecureString
cmdlet konwertuje zaszyfrowane standardowe ciągi na bezpieczne ciągi. Może również konwertować zwykły tekst na bezpieczne ciągi. Jest on używany z i ConvertFrom-SecureString
Read-Host
. Bezpieczny ciąg utworzony przez polecenie cmdlet może być używany z poleceniami cmdlet lub funkcjami, które wymagają parametru typu SecureString. Bezpieczny ciąg można przekonwertować z powrotem na zaszyfrowany, standardowy ciąg przy użyciu ConvertFrom-SecureString
polecenia cmdlet . Dzięki temu można przechowywać go w pliku do późniejszego użycia.
Jeśli przekonwertowany ciąg standardowy został zaszyfrowany ConvertFrom-SecureString
przy użyciu określonego klucza, ten sam klucz musi być podany jako wartość parametru ConvertTo-SecureString
Key lub SecureKey polecenia cmdlet.
Uwaga
Należy pamiętać, że na sieć DotNet zawartość protokołu SecureString nie jest szyfrowana w systemach innych niż Windows.
Przykłady
Przykład 1. Konwertowanie bezpiecznego ciągu na zaszyfrowany ciąg
W tym przykładzie pokazano, jak utworzyć bezpieczny ciąg z danych wejściowych użytkownika, przekonwertować bezpieczny ciąg na zaszyfrowany ciąg standardowy, a następnie przekonwertować zaszyfrowany ciąg standardowy z powrotem na bezpieczny ciąg.
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
Pierwsze polecenie używa parametru Read-Host
AsSecureString polecenia cmdlet do utworzenia bezpiecznego ciągu. Po wprowadzeniu polecenia wszystkie znaki, które wpiszesz, są konwertowane na bezpieczny ciąg, a następnie zapisywane w zmiennej $Secure
.
Drugie polecenie wyświetla zawartość zmiennej $Secure
. Ponieważ zmienna $Secure
zawiera bezpieczny ciąg, program PowerShell wyświetla tylko typ System.Security.SecureString .
Trzecie polecenie używa ConvertFrom-SecureString
polecenia cmdlet, aby przekonwertować bezpieczny ciąg w zmiennej $Secure
na zaszyfrowany ciąg standardowy. Zapisuje wynik w zmiennej $Encrypted
.
Czwarte polecenie wyświetla zaszyfrowany ciąg w wartości zmiennej $Encrypted
.
Piąte polecenie używa ConvertTo-SecureString
polecenia cmdlet, aby przekonwertować zaszyfrowany ciąg standardowy w zmiennej $Encrypted
z powrotem na bezpieczny ciąg. Zapisuje wynik w zmiennej $Secure2
.
Szóste polecenie wyświetla wartość zmiennej $Secure2
. Typ SecureString wskazuje, że polecenie zakończyło się pomyślnie.
Przykład 2. Tworzenie bezpiecznego ciągu z zaszyfrowanego ciągu w pliku
W tym przykładzie pokazano, jak utworzyć bezpieczny ciąg na podstawie zaszyfrowanego standardowego ciągu zapisanego w pliku.
$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)
Pierwsze polecenie używa parametru Read-Host
AsSecureString polecenia cmdlet do utworzenia bezpiecznego ciągu. Po wprowadzeniu polecenia wszystkie znaki, które wpiszesz, są konwertowane na bezpieczny ciąg, a następnie zapisywane w zmiennej $Secure
.
Drugie polecenie używa ConvertFrom-SecureString
polecenia cmdlet do konwertowania bezpiecznego ciągu w $Secure
zmiennej na zaszyfrowany ciąg standardowy przy użyciu określonego klucza. Zawartość jest zapisywana w zmiennej $Encrypted
.
Trzecie polecenie używa operatora potoku (|
), aby wysłać wartość $Encrypted
zmiennej do Set-Content
polecenia cmdlet, co zapisuje wartość w pliku Encrypted.txt.
Czwarte polecenie używa Get-Content
polecenia cmdlet do pobrania zaszyfrowanego standardowego ciągu w pliku Encrypted.txt. Polecenie używa operatora potoku do wysyłania zaszyfrowanego ciągu do ConvertTo-SecureString
polecenia cmdlet, które konwertuje go na bezpieczny ciąg przy użyciu określonego klucza.
Wyniki są zapisywane w zmiennej $Secure2
.
Przykład 3. Konwertowanie ciągu zwykłego tekstu na bezpieczny ciąg
To polecenie konwertuje ciąg zwykły tekst na bezpieczny ciąg P@ssW0rD!
i przechowuje wynik w zmiennej $Secure_String_Pwd
.
Począwszy od programu PowerShell 7, parametr Force nie jest wymagany podczas korzystania z parametru AsPlainText . Jednak uwzględnienie parametru Force gwarantuje, że instrukcja jest zgodna z wcześniejszymi wersjami.
$Secure_String_Pwd = ConvertTo-SecureString "P@ssW0rD!" -AsPlainText -Force
Uwaga
Należy unikać używania ciągów zwykłego tekstu w skryscie lub w wierszu polecenia. Zwykły tekst może być wyświetlany w dziennikach zdarzeń i dziennikach historii poleceń.
Parametry
-AsPlainText
Określa ciąg zwykłego tekstu, który ma być konwertowany na bezpieczny ciąg. Polecenia cmdlet bezpiecznego ciągu pomagają chronić poufny tekst. Tekst jest szyfrowany pod kątem prywatności i jest usuwany z pamięci komputera po jego użyciu. Jeśli używasz tego parametru do podawania zwykłego tekstu jako danych wejściowych, system nie może chronić tych danych wejściowych w ten sposób.
Type: | SwitchParameter |
Position: | 1 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Force
Począwszy od programu PowerShell 7, parametr Force nie jest już wymagany podczas korzystania z parametru AsPlainText . Chociaż parametr nie jest używany, nie został usunięty w celu zapewnienia zgodności z wcześniejszymi wersjami programu PowerShell.
Type: | SwitchParameter |
Position: | 2 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Key
Określa klucz szyfrowania używany do konwertowania oryginalnego bezpiecznego ciągu na zaszyfrowany ciąg standardowy. Prawidłowe długości klucza to 16, 24 i 32 bajty.
Type: | Byte[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-SecureKey
Określa klucz szyfrowania używany do konwertowania oryginalnego bezpiecznego ciągu na zaszyfrowany ciąg standardowy. Klucz musi być podany w formacie bezpiecznego ciągu. Bezpieczny ciąg zostanie przekonwertowany na tablicę bajtów, która będzie używana jako klucz. Prawidłowe bezpieczne długości kluczy to 8, 12 i 16 punktów kodu.
Type: | SecureString |
Position: | 1 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-String
Określa ciąg, który ma być konwertowany na bezpieczny ciąg.
Type: | String |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
Dane wejściowe
Do tego polecenia cmdlet można przekazać standardowy zaszyfrowany ciąg.
Dane wyjściowe
To polecenie cmdlet zwraca utworzony obiekt SecureString .
Uwagi
Niektóre znaki, takie jak emotikony, odpowiadają kilku punktom kodu w ciągu zawierającym je. Unikaj używania tych znaków, ponieważ mogą powodować problemy i nieporozumienia, gdy są używane w haśle.