这是C#示例代码,用于验证哈希密码。
Salt大小为8,可生成随机字节,10000次迭代,Hash大小为20。
public static bool VerifyHashedString(string inputString, string hashedString)
{
try
{
byte[] hashBytes = Convert.FromBase64String(hashedString);
var salt = new byte[8];
Array.Copy(hashBytes, 0, salt, 0, 8);
var pbkdf2 = new Rfc2898DeriveBytes(inputString, salt, 10000);
byte[] hash = pbkdf2.GetBytes(20);
for (var i = 0; i < 20; i++)
{
if (hashBytes[i + 8] != hash[i])
{
return false;
}
}
return true;
}
catch
{
return false;
}
}
我正在使用以下代码在golang中进行验证-请找到链接 https://github.com/anaskhan96/go-password-encoder 但我无法匹配哈希文本
可能是什么原因?
以下是观察值哈希密码长度的变化。
在C#中KwLur0TzENvIVUmvTg0gqPUh + Jkndlu2bH7L8g ==
在Golang中KETc4Dp1kZzPC6pdePc5OQyDXLA =