1

加密的密码存储在我的 .ps1 脚本中。在新环境中设置脚本时,用户必须在脚本开头手动配置此密码。我已经设置了一个开关参数,这样用户就可以以这种方式运行脚本,它会给用户提供所需的哈希值。但是,当提示输入密码两次以确保其中没有拼写错误或类似错误时,我无法使密码哈希值匹配。为了演示,我可以在 PowerShell中连续两次手动输入,输入完全相同的密码会得到不同的结果:

Read-Host -AsSecureString 'Enter password' | ConvertFrom-SecureString

这是有或没有-Key-SecureKey参数。如何提示用户输入密码(两次以确保它们匹配)以及如果/当​​它们匹配时,输出密码哈希?

4

1 回答 1

0

这不是一个非常漂亮的解决方案,但可以解密给定的密码然后比较它们:

if ([Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringtoBSTR(($enterpw | ConvertTo-SecureString -Key $key))) -ne [Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringtoBSTR(($enterpw2 | ConvertTo-SecureString -Key $key)))) {
    Write-Host "Given passwords do not match"
    Break
}
于 2015-04-08T06:24:57.520 回答