ConvertFrom-SecureString

将安全字符串转换为加密的标准字符串。

语法

ConvertFrom-SecureString
                [-SecureString] <SecureString>
                [[-SecureKey] <SecureString>]
                [<CommonParameters>]
ConvertFrom-SecureString
                [-SecureString] <SecureString>
                [-AsPlainText]
                [<CommonParameters>]
ConvertFrom-SecureString
                [-SecureString] <SecureString>
                [-Key <Byte[]>]
                [<CommonParameters>]

说明

cmdlet ConvertFrom-SecureStringSystem.Security.SecureString) (安全字符串转换为 System.String) (加密的标准字符串。 和安全字符串不同,加密的标准字符串可保存在文件中以供以后使用。 可以使用 ConvertTo-SecureString cmdlet 将加密的标准字符串转换回其安全字符串格式。

如果使用 KeySecureKey 参数指定加密密钥,则使用高级加密标准 (AES) 加密算法。 指定的密钥必须具有 128、192 或 256 字节的长度,因为这些是 AES 加密算法支持的密钥长度。 如果未指定密钥,则使用 Windows 数据保护 API (DPAPI) 加密标准字符串表示形式。

注意

请注意,对于每个 DotNet,SecureString 的内容不会在非 Windows 系统上加密。

示例

示例 1:Create安全字符串

$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 对象传递给 ConvertFrom-SecureString。

输出

String

ConvertFrom-SecureString 返回标准字符串对象。

备注

  • 若要根据在命令提示符处键入的字符创建安全字符串,请使用 cmdlet 的 Read-HostAsSecureString 参数。
  • 使用 KeySecureKey 参数指定密钥时,密钥长度必须正确。 例如,可以将 128 位的键指定为包含 16 个十进制数字的字节数组。 同样,192 位和 256 位键分别对应于 24 和 32 十进制数字的字节数组。
  • 某些字符(如表情符号)对应于包含它们的字符串中的多个码位。 避免使用这些字符,因为它们在密码中使用时可能会导致问题和误解。