Sdílet prostřednictvím


ConvertTo-SecureString

Převede prostý text nebo šifrované řetězce na zabezpečené řetězce.

Syntaxe

ConvertTo-SecureString
              [-String] <String>
              [[-SecureKey] <SecureString>]
              [<CommonParameters>]
ConvertTo-SecureString
              [-String] <String>
              [-AsPlainText]
              [-Force]
              [<CommonParameters>]
ConvertTo-SecureString
              [-String] <String>
              [-Key <Byte[]>]
              [<CommonParameters>]

Description

Rutina ConvertTo-SecureString převede šifrované standardní řetězce na zabezpečené řetězce. Může také převést prostý text na zabezpečené řetězce. Používá se s ConvertFrom-SecureString a Read-Host. Zabezpečený řetězec vytvořený rutinou lze použít s rutinami nebo funkcemi, které vyžadují parametr typu SecureString. Zabezpečený řetězec lze převést zpět na šifrovaný standardní řetězec pomocí rutiny ConvertFrom-SecureString. To umožňuje uložení do souboru pro pozdější použití.

Pokud byl standardní řetězec pomocí ConvertFrom-SecureString zašifrován se zadaným klíčem, stejný klíč musí být zadán jako hodnota parametru Key nebo SecureKey rutiny ConvertTo-SecureString.

Poznámka

Další informace o ochraně dat SecureString najdete v tématu Jak zabezpečený je SecureString?.

Příklady

Příklad 1: Převedení zabezpečeného řetězce na šifrovaný řetězec

Tento příklad ukazuje, jak vytvořit zabezpečený řetězec ze vstupu uživatele, převést zabezpečený řetězec na šifrovaný standardní řetězec a pak převést šifrovaný standardní řetězec zpět na zabezpečený řetězec.

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

První příkaz použije k vytvoření zabezpečeného řetězce parametr AsSecureString rutiny Read-Host. Po zadání příkazu se všechny znaky, které zadáte, převedou na zabezpečený řetězec a uloží se do proměnné $Secure.

Druhý příkaz zobrazí obsah proměnné $Secure. Vzhledem k tomu, že proměnná $Secure obsahuje zabezpečený řetězec, PowerShell zobrazí pouze typ System.Security.SecureString.

Třetí příkaz používá rutinu ConvertFrom-SecureString k převodu zabezpečeného řetězce v proměnné $Secure na šifrovaný standardní řetězec. Uloží výsledek do proměnné $Encrypted.

Čtvrtý příkaz zobrazí šifrovaný řetězec v hodnotě proměnné $Encrypted.

Pátý příkaz používá rutinu ConvertTo-SecureString k převodu šifrovaného standardního řetězce v proměnné $Encrypted zpět na zabezpečený řetězec. Uloží výsledek do proměnné $Secure2. Šestý příkaz zobrazí hodnotu proměnné $Secure2. Typ SecureString označuje, že příkaz byl úspěšný.

Příklad 2: Vytvoření zabezpečeného řetězce z šifrovaného řetězce v souboru

Tento příklad ukazuje, jak vytvořit zabezpečený řetězec z šifrovaného standardního řetězce uloženého v souboru.

$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)

První příkaz použije k vytvoření zabezpečeného řetězce parametr AsSecureString rutiny Read-Host. Po zadání příkazu se všechny znaky, které zadáte, převedou na zabezpečený řetězec a uloží se do proměnné $Secure.

Druhý příkaz pomocí rutiny ConvertFrom-SecureString převede zabezpečený řetězec v proměnné $Secure na šifrovaný standardní řetězec pomocí zadaného klíče. Obsah se uloží do proměnné $Encrypted.

Třetí příkaz pomocí operátoru kanálu (|) odešle hodnotu proměnné $Encrypted do rutiny Set-Content, která uloží hodnotu do souboru Encrypted.txt.

Čtvrtý příkaz používá rutinu Get-Content k získání šifrovaného standardního řetězce v souboru Encrypted.txt. Příkaz využívá operátor kanálu k přenosu šifrovaného řetězce do cmdletu ConvertTo-SecureString, který jej převede na bezpečnostní řetězec pomocí zadaného klíče. Výsledky se uloží do proměnné $Secure2.

Příklad 3: Převedení řetězce prostého textu na zabezpečený řetězec

Tento příkaz převede řetězec prostého textu P@ssW0rD! na zabezpečený řetězec a uloží výsledek do proměnné $Secure_String_Pwd.

Počínaje PowerShellem 7 není při použití parametru AsPlainText nutné použít parametr Force. Zahrnutím parametru Force ale zajistíte, že příkaz bude kompatibilní s dřívějšími verzemi.

$Secure_String_Pwd = ConvertTo-SecureString "P@ssW0rD!" -AsPlainText -Force

Opatrnost

Měli byste se vyhnout použití řetězců ve formátu prostého textu ve skriptu nebo z příkazového řádku. Prostý text se může zobrazit v protokolech událostí a protokolech historie příkazů.

Parametry

-AsPlainText

Určuje řetězec ve formátu prostého textu, který se má převést na zabezpečený řetězec. Příkazy pro zabezpečené řetězce pomáhají chránit důvěrný text. Text je zašifrovaný pro ochranu osobních údajů a po použití se odstraní z paměti počítače. Pokud tento parametr použijete k zadání prostého textu jako vstupu, systém nemůže tento vstup tímto způsobem chránit.

Typ:SwitchParameter
Position:1
Default value:None
Vyžadováno:False
Přijmout vstup kanálu:False
Přijmout zástupné znaky:False

-Force

Počínaje PowerShellem 7 už není při použití parametru AsPlainText vyžadován parametr Force. I když se parametr nepoužívá, neodebral se kvůli zajištění kompatibility se staršími verzemi PowerShellu.

Typ:SwitchParameter
Position:2
Default value:None
Vyžadováno:False
Přijmout vstup kanálu:False
Přijmout zástupné znaky:False

-Key

Určuje šifrovací klíč použitý k převodu původního zabezpečeného řetězce na šifrovaný standardní řetězec. Platné délky klíčů jsou 16, 24 a 32 bajtů.

Typ:Byte[]
Position:Named
Default value:None
Vyžadováno:False
Přijmout vstup kanálu:False
Přijmout zástupné znaky:False

-SecureKey

Určuje šifrovací klíč použitý k převodu původního zabezpečeného řetězce na šifrovaný standardní řetězec. Klíč musí být zadaný ve formátu zabezpečeného řetězce. Zabezpečený řetězec se převede na bajtové pole, které se použije jako klíč. Platné délky zabezpečených klíčů jsou 8, 12 a 16 bodů kódu.

Typ:SecureString
Position:1
Default value:None
Vyžadováno:False
Přijmout vstup kanálu:False
Přijmout zástupné znaky:False

-String

Určuje řetězec, který se má převést na zabezpečený řetězec.

Typ:String
Position:0
Default value:None
Vyžadováno:True
Přijmout vstup kanálu:True
Přijmout zástupné znaky:False

Vstupy

String

Do tohoto cmdletu můžete směrovat standardní šifrovaný řetězec.

Výstupy

SecureString

Tato rutina vrátí vytvořený objekt SecureString.

Poznámky

Některé znaky, například emotikon, odpovídají několika bodům kódu v řetězci, který je obsahuje. Nepoužívejte tyto znaky, protože můžou způsobovat problémy a nedorozumění při použití v hesle.