ConvertFrom-SecureString
將安全字串轉換為加密的標準字串。
語法
ConvertFrom-SecureString
[-SecureString] <SecureString>
[[-SecureKey] <SecureString>]
[<CommonParameters>]
ConvertFrom-SecureString
[-SecureString] <SecureString>
[-AsPlainText]
[<CommonParameters>]
ConvertFrom-SecureString
[-SecureString] <SecureString>
[-Key <Byte[]>]
[<CommonParameters>]
Description
Cmdlet 會將 ConvertFrom-SecureString
安全字串 (System.Security.SecureString) 轉換成加密的標準字串串 (System.String)。 不同於安全字串,加密的標準字串可以儲存在檔案中以供日後使用。 加密的標準字串可以使用 Cmdlet 轉換回其安全字串格式 ConvertTo-SecureString
。
如果使用 Key 或 SecureKey 參數指定加密金鑰,則會使用進階加密標準 (AES) 加密演算法。 指定的金鑰長度必須為 128、192 或 256 位,因為這些是 AES 加密演演算法支援的金鑰長度。 如果未指定任何金鑰,則會使用 Windows 資料保護 API (DPAPI) 來加密標準字串表示法。
注意
請注意,根據 DotNet,SecureString 的內容不會在非 Windows 系統上加密。
範例
範例 1:建立安全字串
$SecureString = Read-Host -AsSecureString
此命令會從您在命令提示字元輸入的字元建立安全字串。 輸入命令之後,輸入您想要儲存為安全字串的字串。 顯示星號 (*
) 來代表您輸入的每個字元。
範例 2:將安全字串轉換為加密的標準字串
$StandardString = ConvertFrom-SecureString $SecureString
此命令會將變數中的 $SecureString
安全字串轉換為加密的標準字串。 產生的加密標準字串會儲存在變數中 $StandardString
。
範例 3:使用 192 位金鑰將安全字串轉換為加密的標準字串
$Key = (3,4,2,3,56,34,254,222,1,1,2,23,42,54,33,233,1,34,2,7,6,5,35,43)
$StandardString = ConvertFrom-SecureString $SecureString -Key $Key
這些命令會使用進階加密標準 (AES) 演算法,將變數中 $SecureString
儲存的安全字串轉換成具有192位金鑰的加密標準字串。 產生的加密標準字串會儲存在變數中 $StandardString
。
第一個命令會將索引鍵儲存在變數中 $Key
。 索引鍵是24個十進位數位的陣列,每個數字必須小於256,才能符合單一不帶正負號的位元組。
因為每個小數位都代表單一位元組(8 位),因此索引鍵總共有 24 位數,總計 192 位(8 x 24)。 這是 AES 演算法的有效金鑰長度。
第二個命令會使用 變數中的 $Key
金鑰,將安全字串轉換成加密的標準字串。
範例 4:將安全字串直接轉換成純文字字串
$secureString = ConvertTo-SecureString -String 'Example' -AsPlainText
$secureString # 'System.Security.SecureString'
ConvertFrom-SecureString -SecureString $secureString -AsPlainText # 'Example'
參數
-AsPlainText
設定時, ConvertFrom-SecureString
會將安全字串轉換為解密的純文本字串做為輸出。
此參數已在PowerShell 7.0中新增。
類型: | SwitchParameter |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-Key
將加密金鑰指定為位元組陣列。
類型: | Byte[] |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-SecureKey
將加密金鑰指定為安全字串。 安全字串值會先轉換成位元組陣列,再當做索引鍵使用。
類型: | SecureString |
Position: | 1 |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-SecureString
指定要轉換成加密標準字串的安全字串。
類型: | SecureString |
Position: | 0 |
預設值: | None |
必要: | True |
接受管線輸入: | True |
接受萬用字元: | False |
輸入
您可以使用管線將 SecureString 物件傳送至此 Cmdlet。
輸出
此 Cmdlet 會傳回建立的純文字字串。
備註
- 若要從命令提示字元建立安全字串,請使用 Cmdlet 的
Read-Host
AsSecureString 參數。 - 當您使用 Key 或 SecureKey 參數來指定金鑰時,金鑰長度必須正確。 例如,可以將128位的索引鍵指定為16個小數位的位元組陣列。 同樣地,192 位和 256 位索引鍵分別對應至 24 和 32 個小數位的位元組陣列。
- 某些字元,例如圖釋,會對應至包含這些字元的字串中的數個字碼點。 避免使用這些字元,因為它們可能會在密碼中使用時造成問題和誤解。