Ich versuche, ein Passwort für den Speicher in einer Datenbank zu hash, ich bekomme aber immer einen ArrayIndexOutOfBounds Fehler.Wenn Hash-Passwort für den Speicher generateHash-Methode geben ArrayIndexOutOfBounds
Ich rufe signup("Test","password")
und der Ausgang ist Test 35 .. kann mir jemand in die richtige Richtung bitte, danke!
public static void signup(String username, String password) {
String saltedPassword = SALT + password;
String hashedPassword = generateHash(saltedPassword);
DB.put("username", hashedPassword);
}
public static String generateHash(String input){
StringBuilder hash= new StringBuilder();
try {
MessageDigest sha = MessageDigest.getInstance("SHA-1");
byte[] hashedBytes = sha.digest(input.getBytes());
char [] digits = {'0','1','2','3','4','5','6','a','b','c','d','e','f'};
for (int idx = 0; idx<hashedBytes.length; idx++) {
byte b = hashedBytes[idx];
hash.append(digits[(b & 0xf0)>>4]);
hash.append(digits[b & 0x0f]); //<<<<<<<------ Error on this line.
}
} catch (Exception e) {
e.printStackTrace();
}
return hash.toString();
}
Danke! Ich versuche, eine Login-Seite für einen Benutzer in einer Web-Anwendung, die einzige Möglichkeit, wie ich es tun, ist die gleiche Hash-Methode zu einem Passwort führen Sie eingeben und vergleichen Sie es mit dem gespeicherten, wenn der eingegebene Passwort-Hash und gespeicherten Passwort Hash Match dann Zugriff erlauben ... Denken Sie, das wäre ausreichend? – Chance212
@ Chance212 [Ja] (http://stackoverflow.com/a/20832047/2970947). –