Механизм проверки двоичного хэша - PullRequest
0 голосов
/ 27 июня 2018

У меня есть бинарный хеш:

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 голосов
/ 27 июня 2018

Вы связываете ArgonHashString() с ArgonHashStringVerify(), как в примерах в модульном тесте :

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

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

Обратите внимание, что ArgonHashBinary() имеет другое применение: вы используете его для генерации (потенциально слабого) пароля (надежного) ключа шифрования, который вы будете использовать для шифрования чего-либо (например, файла). Так что он не используется для проверки пароля.

...