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-SecureStringRead-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

String

Do tego polecenia cmdlet można przekazać standardowy zaszyfrowany ciąg.

Dane wyjściowe

SecureString

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.