1
학교 운동을하는 동안 bcrypt를 사용하여 암호를 올바르게 저장해야합니다 (데이터베이스에 해시 됨). 메소드를 비교할 때 메소드는 항상 false를 리턴합니다. 내 코드는 다음과 같습니다해시 된 암호와 salt (bcrypt)를 비교하면 항상 false가 반환됩니다.
등록 :
String username = editTextUsername.getText().toString();
String password = editTextPassword.getText().toString();
String hashedPW = BCrypt.hashpw(password, BCrypt.gensalt());
User user = new User(username, hashedPW);
user.save();
로그인 :
String username = editTextUsername.getText().toString();
String enteredPassword = editTextPassword.getText().toString();
String hashedPW = BCrypt.hashpw(enteredPassword, BCrypt.gensalt());
User u = usercontroller.getUser(username); //gets user object
String password = u.getPassword;
BCrypt.checkpw(password, hashedPW); //always returns false
나는 아마도 나를 도울 수있는 그곳에 BCrypt 전문가가되기를 바랍니다. 미리 감사드립니다.
UI의 첫 번째 인수와 저장소 (해시 된 값)의 두 번째 인수로 일반 텍스트 암호를 전달해야합니다 .. – dvsakgec
찾고있는 BCrypt 전문가가 아니지만 상상할 수 있습니다. BCrypt.gensalt()는 호출 할 때마다 다른 난수를 반환합니다. 그러므로 gensalt가 다른 경우 결과가 다르기 때문에 해시가 다르다고 생각합니다. – 0xDEADC0DE