连续的SecureString哈希值不匹配

时间:2015-04-07 10:06:41

标签: powershell securestring

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

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

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

1 个答案:

答案 0 :(得分: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
}