ConvertFrom-SecureString
將安全字串轉換為加密的標準字串。
語法
Secure (預設值)
ConvertFrom-SecureString
[-SecureString] <SecureString>
[[-SecureKey] <SecureString>]
[<CommonParameters>]
AsPlainText
ConvertFrom-SecureString
[-SecureString] <SecureString>
[-AsPlainText]
[<CommonParameters>]
Open
ConvertFrom-SecureString
[-SecureString] <SecureString>
[-Key <Byte[]>]
[<CommonParameters>]
Description
該 ConvertFrom-SecureString 指令集將安全字串(System.Security.SecureString)轉換成加密標準字串(System.String)。 與安全字串不同,加密的標準字串可以儲存在檔案中以供日後使用。 加密標準字串可透過 ConvertTo-SecureString cmdlet 將其轉換為安全字串格式。
若使用 金鑰 或 SecureKey 參數指定加密金鑰,則使用先進加密標準(AES)加密演算法。 指定的金鑰長度必須為 128、192 或 256 位元,因為這些是 AES 加密演算法所支援的金鑰長度。 若未指定金鑰,則使用 Windows 資料保護 API(DPAPI)來加密標準字串表示法。
Note
SecureString 的內容在非 Windows 系統上未加密。欲了解更多關於 SecureString 資料保護的資訊,請參見 SecureString 有多>安全?。
範例
範例 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 |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
AsPlainText
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-Key
指定加密金鑰為位元組陣列。 如果金鑰與用於加密原始安全字串的金鑰不符,回傳的值即無效。 如果加密字串是沒有金鑰建立的,你不應該用金鑰來轉換回安全字串。
參數屬性
| 類型: | Byte[] |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
Open
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-SecureKey
指定加密金鑰為安全字串。 安全字串值會先轉換成位元組陣列,再用作鍵。 如果金鑰與用於加密原始安全字串的金鑰不符,回傳的值即無效。 如果加密字串是沒有金鑰建立的,你不應該用金鑰來轉換回安全字串。
參數屬性
| 類型: | SecureString |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
Secure
| Position: | 1 |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-SecureString
指定要轉換成加密標準字串的安全字串。
參數屬性
| 類型: | SecureString |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
(All)
| Position: | 0 |
| 必要: | True |
| 來自管線的值: | True |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
CommonParameters
此 cmdlet 支援常見參數:-Debug、-ErrorAction、-ErrorVariable、-InformationAction、-InformationVariable、-OutBuffer、-OutVariable、-PipelineVariable、-ProgressAction、-Verbose、-WarningAction 和 -WarningVariable。 如需詳細資訊,請參閱 about_CommonParameters。
輸入
SecureString
你可以把 SecureString 物件輸入這個 cmdlet。
輸出
String
此 cmdlet 會回傳產生的純文字字串。
備註
- 若要從命令提示字元輸入的字元建立安全字串,請使用 cmdlet 中的
Read-Host參數。 - 當你使用 Key 或 SecureKey 參數來指定金鑰時,金鑰長度必須正確。 例如,128位元的鍵可以指定為16位十進位數字的位元組陣列。 同樣地,192 位元與 256 位元的金鑰分別對應於 24 位和 32 位十進位數字的位元組陣列。
- 有些字元,例如表情符號,對應包含它們的字串中的多個代碼點。 避免使用這些字元,因為在密碼中使用時可能會造成問題和誤解。