验证二进制哈希的机制

时间:2018-06-27 11:45:09

标签: c# .net cryptography libsodium argon

我有一个二进制哈希:

var hash = PasswordHash.ArgonHashBinary(Encoding.ASCII.GetBytes(passwd), salt,StrengthArgon.Interactive)

请告诉我如何转换方法ArgonHashBinary()返回的字节数组,以便可以使用ArgonHashStringVerify()验证密码。

P.S。没有任何方法可以让我直接从二进制哈希中验证密码,即没有ArgonHashBinaryVerify()方法。

人为设计的示例代码:

var salt = PasswordHash.ArgonGenerateSalt();
var passwd = "ABCD";
var hash = PasswordHash.ArgonHashBinary(Encoding.ASCII.GetBytes(passwd), salt,StrengthArgon.Interactive);

if (ArgonHashStringVerify(hash, passwd))
{
    // password match
}
else 
{
    // error
}

1 个答案:

答案 0 :(得分:1)

您将ArgonHashString()ArgonHashStringVerify()配对,就像unit test中的示例一样:

const string PASSWORD = "gkahjfkjewrykjKJHKJHKJbhuiqyr  8923fhsjfkajwehkjg";
var hash = PasswordHash.ArgonHashString(PASSWORD);

Assert.IsTrue(PasswordHash.ArgonHashStringVerify(hash, PASSWORD));

请注意,ArgonHashBinary()有另一种用法:您使用它从(可能弱)密码生成(强)加密密钥,该密钥将用于加密某些内容(例如文件)。因此它不用于密码检查。