ConvertFrom-SecureString
将安全字符串转换为加密的标准字符串。
语法
ConvertFrom-SecureString
[-SecureString] <SecureString>
[[-SecureKey] <SecureString>]
[<CommonParameters>]
ConvertFrom-SecureString
[-SecureString] <SecureString>
[-AsPlainText]
[<CommonParameters>]
ConvertFrom-SecureString
[-SecureString] <SecureString>
[-Key <Byte[]>]
[<CommonParameters>]
说明
ConvertFrom-SecureString
cmdlet 可将安全字符串 (System.Security.SecureString) 转换为加密的标准字符串 (System.String)。 和安全字符串不同,加密的标准字符串可保存在文件中以供以后使用。 加密的标准字符串可转换回它的安全字符串格式,方法是使用 ConvertTo-SecureString
cmdlet。
如果使用 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 返回创建的明文字符串。
备注
- 若要根据命令提示符处键入的字符创建安全字符串,请使用
Read-Host
cmdlet 的 AsSecureString 参数。 - 使用 Key 或 SecureKey 参数指定密钥时,密钥长度必须正确。 例如,128 位的密钥可以指定为一个包含 16 个十进制数字的字节数组。 同样,192 位和 256 位的密钥分别对应于包含 24 个和 32 个十进制数字的字节数组。
- 某些字符(如表情符号)对应于包含它们的字符串中的多个代码点。 避免使用这些字符,因为它们可能会导致在密码中使用时出现问题和误解。