Ich erstelle eine einfache Passwort Vault/Generator, und gerade arbeite ich an der Tresor-Teil meines Codes, und schreibe Code für die Verschlüsselung von Passwörtern. Ich verwende MessageDigest.MessageDigest.getInstance (Algorithmus) immer werfen NoSuchAlgorithmException
Wenn ich jedoch versuche, einen Algorithmus zu wählen, löst er immer eine NoSuchAlgorithmException aus. Ich versuche SHA-1 oder SHA-256 zu verwenden. Ich habe überall gesucht und ich kann keine Lösung finden. EDIT: Ich habe vergessen zu erwähnen, dass ich "SHA-1", "SHA-256" und "MD5" versucht habe. Keine Arbeit.
Meine Methode:
private static String generateHash(String input) throws NoSuchAlgorithmException {
MessageDigest messageDigest = MessageDigest.getInstance("SHA-256");
messageDigest.update(input.getBytes());
String encryptedString = new String(messageDigest.digest());
System.out.println("encryptedString :: " + encryptedString);
return encryptedString;
}
(ich nur den Ausdruck für Debugging-Zwecke encryptedString)
I JDK bin mit 1.8.0_91 und IntelliJ IDEA 1.5.0.2.
EDIT: Also habe ich herausgefunden, was falsch war. Anstatt throws NoSuchAlgorithmException
zu verwenden, muss ich meinen Code in einen try/catch-Block setzen, der NoSuchAlgorithmException
fängt. Ich weiß nicht warum, aber es hat mein Problem behoben.
NB: Die von 'digest()' zurückgegebenen Bytes sind rohe Binärdaten, die nicht zur Umwandlung in 'String' geeignet sind. Wenn Sie eine Zeichenfolge möchten, müssen Sie sie kodieren. –
Ich bin noch ziemlich neu beim Hashing, und ich bin ziemlich durcheinander geraten. Ich versuche, SHA-256 zu verwenden, aber SHA-1, SHA-256 und MD5 funktionieren nicht. Entschuldigung für die Verwirrung. – ngage
Führen Sie den folgenden Code aus, um eine Liste der Algorithmen und Sicherheitsanbieter zu erhalten. http://pastebin.com/sQ2V2152 – CConard96