jBCrypt не может подтвердить пароль - PullRequest
0 голосов
/ 29 сентября 2011

Я работаю над шифрованием паролей для своего приложения, поскольку пароль будет храниться в общих настройках

Я нашел bcrypt и прочитал много хорошего об этом, но не могу заставить его работать

Я использую jBCrypt . Я следовал инструкциям и сделал это в качестве теста

String hashed = BCrypt.hashpw("dog", BCrypt.gensalt(12));
String candidate = BCrypt.hashpw("dog", BCrypt.gensalt(12));
if (BCrypt.checkpw(candidate, hashed)){
    Toast.makeText(Loader.this, "equals", Toast.LENGTH_LONG).show();
}else{
    Toast.makeText(Loader.this, "don't match?", Toast.LENGTH_LONG).show();
}

Однако каждый раз, когда я запускаю приложение, тост, который отображается, не совпадает? Поэтому, когда я записываю хешированный пароль в свои общие префы, а затем сравниваю его с пользовательским вводом, он говорит, что каждый раз говорит неверно, поскольку, по-видимому, он каждый раз дает мне другой хэш, что случилось, как я могу использовать это?

1 Ответ

1 голос
/ 29 сентября 2011

Согласно документации , BCrypt.checkpw() принимает пароль в виде открытого текста в качестве первого аргумента.Так и должно быть:

String hashed = BCrypt.hashpw("dog", BCrypt.gensalt(12));
String candidate = "dog";

if (BCrypt.checkpw(candidate, hashed)) {
    Toast.makeText(Loader.this, "equals", Toast.LENGTH_LONG).show();
} else {
    Toast.makeText(Loader.this, "doesn't match?", Toast.LENGTH_LONG).show();
}
...