Messagedigest -Klasse
Die MessagedIGest -Klasse bietet Anwendungen mit der Funktionalität von Informationsdigestalgorithmen wie MD5- oder SHA -Algorithmen. Der Information Digest ist eine sichere Einweg-Hash-Funktion, die Daten zu jeder Größe empfängt und einen Hash-Wert mit fester Länge ausgibt.
Das MessagedIGest -Objekt beginnt initialisiert. Dieses Objekt verarbeitet Daten mit der Methode update (). Sie können die Reset () -Methode jederzeit aufrufen, um die Zusammenfassung zurückzusetzen. Sobald alle Daten aktualisiert werden müssen, sollten eine der Digest () -Methoden aufgerufen werden, um die Hash -Berechnung abzuschließen.
Die Digest -Methode kann nur einmal für eine bestimmte Menge an Aktualisierungsdaten aufgerufen werden. Nach dem Aufrufen der Digest wird das MessagedIGest -Objekt auf seinen Ausgangszustand zurückgesetzt.
veranschaulichen:
Auf der Website, um die Datenschutzinformationen wie Benutzernamen und Passwort des Website -Mitglieds zu schützen, verschlüsseln wir sie bei der Registrierung direkt auf MD5 oder auf andere Weise. Sogar der Datenbankadministrator kann das Kennwort und andere Informationen des Mitglieds nicht anzeigen. Der Kennworteffekt in der Datenbank lautet wie: 8E830882F03B2CB84D1A657F346DD41A -Effekt.
Da der MD5 -Algorithmus irreversibel ist, wird er von vielen Websites häufig verwendet.
Drei häufig verwendete Verschlüsselungsmethoden
Methode 1: Verwenden Sie Bit -Operatoren, um verschlüsselte Daten in hexadezimale Methode zu konvertieren. Methode 2: Verwenden Sie die Formatierungsmethode, um verschlüsselte Daten in hexadezimale Umwandlung zu konvertieren (empfohlen)
Methode 3: Verwenden Sie den Algorithmus, um die verschlüsselten Daten in Hexadezimal umzuwandeln
Import Java.Security.Messagedigest; Import Java.Security.NosuchalgorithmException;/*** Verwenden Sie die Messagedigest-Klasse, die mit Java* @Author Xiaokui*/öffentliche Klasse Verschlüsselung mit Java* @Author Xiaokui*/öffentliche Klasse wird. Sein Digest ist 32 Bit länger als der MD5 Digest (1Byte = 8bit, entspricht 4 Bytes lang, 8 Zeichen mehr als MD5 nach Umwandlung in Hexadezimal). * Für Zwangsangriffe ist MD5 eine Operation der Größenordnung von 2128 und SHA-1 ist eine Operation der Größenordnung von 2160. * Schwierigkeit für zwei Nachrichten mit derselben Verdauung: MD5 ist eine Operation von 264 ist ein Betrieb der Größenordnung, und SHA-1 ist ein Operation von 280. * Daher ist SHA-1 gegen erzwungene Angriffe mächtiger. Da SHA-1 jedoch mehr Zyklusschritte als MD5 (80:64) hat und der zu verarbeitende Cache größer ist (160 Bit: 128 Bit), läuft SHA-1 langsam als MD5. * * @param Source String, die verschlüsselt werden muss '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'}; Versuchen Sie {MessagedIGest md = MessagedIGest.getInstance (HashType); Md.Digest (); // Erhalten Sie den Chiffretext, um die Hash-Berechnung zu vervollständigen und einen 128-Bit-langen Ganzzahl-char zu erzeugen. Byte in hexadezimale Zeichen Byte Byte0 = Encryptstr [i]; // Nehmen Sie das I-Th Byte Str [k ++] = HexDigits [Byte0 >>> 4 & 0xf]; // Nehmen Sie die numerische Umwandlung der oberen 4 Bits in Byte, >>> für logische Verschiebung rechts, die Symbolbits, die die Symbol-Bits rechts rechts rechten. Nehmen Sie die numerische Umwandlung der unteren 4 -Bits in Byte} zurück statische String Gethash2 (String Source, String Hashtype) {StringBuilder sb = new StringBuilder (); MessagedIGest Md5; Try {md5 = modellagedigest.getInstance (Hashtype); {sb.append (string.format ("%02x", b)); // Decimal to Hexadecimal, X bedeutet Ausgabe in Hexadezimal, 02 Zeigt an, dass es weniger als zwei Ziffern gibt, bevor die Ausgabe 0} return sb.toString ();} catch (nosuchalgorithmexception E) {E.Printstacktra ()} {E.Printstacktrac () {{E.Printstacktra (); @param Source -Zeichenfolge, die verschlüsselt werden muss '9', 'a', 'b', 'c', 'd', 'e', 'f'}; StringBuilder sb = new StringBuilder (); Messagedigest md5; try {md5 = modungsgigest. 0; i <Encryptstr.Length; (NoSuchalgorithmException e) {e.printstacktrace ();} return null;} public static void main (String [] args) {System.out.println (Gethash ("xiaokui", "md5"); "/n"); system.out.println(gethash2("xiaokui", "md5")); "Md5")); System.out.println (Gethash3 ("xiaokui", "sha") + "/n");}}Ausgangsergebnis
8E830882F03B2CB84D1A657F346DD41A 0BA5512371D00C86E91712F44AAB7138 8E830882F03B2CB84D1A657F346DD41A 0BA55512371D00C86E91712F44AAB713898745F91 8E830882F03B2CB84D1A657F346DDD41A 0BA5512371D00C86E91712F44AB71389745F91
Wir fanden heraus, dass die drei Methoden den gleichen Effekt ausführten und die SHA -Länge 8 Zeichen (32 Bit) mehr als MD5 beträgt.
Zusammenfassen
Das obige ist der gesamte Inhalt dieses Artikels über das Codebeispiel der Verschlüsselungsklasse MessagedIGest -Klasse, die mit Java geliefert wird. Ich hoffe, es wird für alle hilfreich sein. Wenn es Mängel gibt, hinterlassen Sie bitte eine Nachricht, um darauf hinzuweisen.