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 cmdlet ConvertTo-SecureString
konwertuje zaszyfrowane ciągi standardowe na bezpieczne ciągi. Może również konwertować zwykły tekst na bezpieczne ciągi. Jest używany z ConvertFrom-SecureString
i Read-Host
. Bezpieczny ciąg utworzony za pomocą polecenia 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 polecenia cmdlet ConvertFrom-SecureString
. Dzięki temu można przechowywać go w pliku do późniejszego użycia.
Jeśli przekonwertowany ciąg standardowy został zaszyfrowany przy użyciu ConvertFrom-SecureString
z określonym kluczem, ten sam klucz musi być podany jako wartość parametru Key lub SecureKey polecenia cmdlet ConvertTo-SecureString
.
Uwaga
Aby uzyskać więcej informacji na temat ochrony danych SecureString, zobacz Jak bezpieczny jest protokół SecureString?.
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 AsSecureString polecenia cmdlet Read-Host
w celu utworzenia bezpiecznego ciągu. Po wprowadzeniu polecenia wszystkie wpisane znaki 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 polecenia cmdlet ConvertFrom-SecureString
, 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 polecenia cmdlet ConvertTo-SecureString
, 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 AsSecureString polecenia cmdlet Read-Host
w celu utworzenia bezpiecznego ciągu. Po wprowadzeniu polecenia wszystkie wpisane znaki są konwertowane na bezpieczny ciąg, a następnie zapisywane w zmiennej $Secure
.
Drugie polecenie używa polecenia cmdlet ConvertFrom-SecureString
, aby przekonwertować bezpieczny ciąg w zmiennej $Secure
na zaszyfrowany ciąg standardowy przy użyciu określonego klucza. Zawartość jest zapisywana w zmiennej $Encrypted
.
Trzecie polecenie używa operatora potoku (|
) do wysyłania wartości zmiennej $Encrypted
do polecenia cmdlet Set-Content
, które zapisuje wartość w pliku Encrypted.txt.
Czwarte polecenie używa polecenia cmdlet Get-Content
do pobrania zaszyfrowanego standardowego ciągu w pliku Encrypted.txt. Polecenie używa operatora potoku do wysyłania zaszyfrowanego ciągu do polecenia cmdlet ConvertTo-SecureString
, 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 P@ssW0rD!
na bezpieczny ciąg i przechowuje wynik w zmiennej $Secure_String_Pwd
.
Począwszy od programu PowerShell 7, parametr Force nie jest wymagany w przypadku używania 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
Ostrożność
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 dla ciągów znaków chronionych 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.
Typ: | SwitchParameter |
Position: | 1 |
Domyślna wartość: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
-Force
Począwszy od programu PowerShell 7, parametr Force nie jest już wymagany w przypadku używania parametru AsPlainText. Chociaż parametr nie jest używany, nie został usunięty w celu zapewnienia zgodności z wcześniejszymi wersjami programu PowerShell.
Typ: | SwitchParameter |
Position: | 2 |
Domyślna wartość: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | 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.
Typ: | Byte[] |
Position: | Named |
Domyślna wartość: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | 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.
Typ: | SecureString |
Position: | 1 |
Domyślna wartość: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
-String
Określa ciąg, który ma być konwertowany na bezpieczny ciąg.
Typ: | String |
Position: | 0 |
Domyślna wartość: | None |
Wymagane: | True |
Akceptowanie danych wejściowych potoku: | True |
Akceptowanie symboli wieloznacznych: | 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.