You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用ConvertTo-SecureString时参数Key绑定失败问题

ConvertTo-SecureString参数绑定错误解决方法

错误原因

ConvertTo-SecureString的-Key参数要求传入System.Byte[]类型的字节数组,你直接传入了字符串类型的密钥,导致类型转换失败,触发错误提示。

修正方案

  1. 将字符串密钥转换为字节数组,使用[System.Text.Encoding]::UTF8.GetBytes()方法完成转换。
  2. 确保密钥字节数组长度符合AES加密要求:必须是16、24或32字节(对应AES-128、AES-192、AES-256算法),原密钥长度不符合,需调整密钥字符串到对应长度。

修正后的完整代码

param (
    [string]$NewPassword
)
# 定义符合32字节长度的密钥字符串(对应AES-256)
$keyString = "ThisIsMy32ByteEncryptionKey12345678"
# 将字符串转换为字节数组
$key = [System.Text.Encoding]::UTF8.GetBytes($keyString)

$encryptedPassword = ConvertTo-SecureString $NewPassword -Key $key
Set-ADAccountPassword -Identity $env:USERNAME -NewPassword $encryptedPassword -Reset

$path = "n:\logs\pwtracker.txt"
# 加密存储时需指定相同密钥,否则后续无法正确解密
$encryptedPassword | ConvertFrom-SecureString -Key $key | Out-File $path -Append

关键注意事项

  • 若坚持使用原密钥字符串,可截取其前16字节(AES-128)来满足要求:$key = [System.Text.Encoding]::UTF8.GetBytes("ThisIsMyEncryptionKey1234")[0..15],但优先推荐使用长度合规的密钥。
  • 后续解密密码时,必须使用相同的密钥字节数组,否则无法还原原始密码。

内容的提问来源于stack exchange,提问作者JerryP

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 11:42:25