ConvertFrom-SecureString

將安全字串轉換為加密的標準字串。

Syntax

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中新增。

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Key

將加密金鑰指定為位元組陣列。

Type:Byte[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-SecureKey

將加密金鑰指定為安全字串。 安全字串值會先轉換成位元組陣列,再當做索引鍵使用。

Type:SecureString
Position:1
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-SecureString

指定要轉換成加密標準字串的安全字串。

Type:SecureString
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

輸入

SecureString

您可以使用管線將 SecureString 物件傳送至此 Cmdlet。

輸出

String

此 Cmdlet 會傳回建立的純文字字串。

備註

  • 若要從命令提示字元建立安全字串,請使用 Cmdlet 的 Read-Host AsSecureString 參數。
  • 當您使用 Key 或 SecureKey 參數來指定金鑰時,金鑰長度必須正確。 例如,可以將128位的索引鍵指定為16個小數位的位元組陣列。 同樣地,192 位和 256 位索引鍵分別對應至 24 和 32 個小數位的位元組陣列。
  • 某些字元,例如圖釋,會對應至包含這些字元的字串中的數個字碼點。 避免使用這些字元,因為它們可能會在密碼中使用時造成問題和誤解。