2016-05-01 6 views
4

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.

+1

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. –

+0

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

+1

Führen Sie den folgenden Code aus, um eine Liste der Algorithmen und Sicherheitsanbieter zu erhalten. http://pastebin.com/sQ2V2152 – CConard96

Antwort

0

Laut Oracle-Dokumentation auf der Message Klasse:

Jede Implementierung der Java-Plattform ist erforderlich, um die folgenden Standardmessage Algorithmen zu unterstützen:

MD5, SHA-1, SHA-256

Oracle JVM unterstützt MD2, MD5, SHA-1, SHA-256, SHA-384, SHA-512 und

+0

Dies gibt mir immer noch einen Fehler, seltsam genug. Ich habe auch MD5 und SHA-256 ausprobiert. Ich werde meine Frage aktualisieren. Ich habe auch vergessen, meinen Code in den ursprünglichen Zustand zu bearbeiten, in dem er sich befand. – ngage

+0

Nicht relevant für dieses Q, aber Oracle Java 8 fügt SHA-224 hinzu. Und auch die OID-Form-Aliase für alle implementierten SHA *, aber das sind Aliase nicht eigenständige Algorithmen. –

0

SHA-128, die y Ou, das in Ihrer ursprünglichen unbearbeiteten Frage erwähnt wird, wird nicht unterstützt. Die unterstützten Message Digest-Algorithmen sind im Dokument Standard Names enthalten.

NB ein Nachrichtenauszug erzeugt keine verschlüsselte Zeichenfolge.

Verwandte Themen