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 位十進位數字的位元組陣列。
  • 有些字元,例如表情符號,對應包含它們的字串中的多個代碼點。 避免使用這些字元,因為在密碼中使用時可能會造成問題和誤解。