Dieser Artikel beschreibt die Analyse der Java -Implementierung von DES -Verschlüsselungs- und Entschlüsselungsalgorithmus. Teilen Sie es für Ihre Referenz wie folgt weiter:
Einführung:
Der Datenverschlüsselungsalgorithmus (DEA) ist ein symmetrischer Verschlüsselungsalgorithmus, der wahrscheinlich das am weitesten verbreitete Schlüsselsystem ist, insbesondere beim Schutz der Sicherheit von Finanzdaten. Die anfänglich entwickelte DEA war in Hardware eingebettet. Normalerweise verwenden automatische Kassiermaschinen (Geldautomaten) DEA. Es stammt aus der Forschungsarbeiten von IBM, die auch mehrere Jahre lang Patentrechte hatte, aber nach Ablauf von 1983 im öffentlichen Bereich und ermöglicht es unter bestimmten Bedingungen ohne die Gebühr von Patentnutzung. Es wurde 1977 von der US -Regierung offiziell verabschiedet.
Die Entstehung praktischer Des entschlüsselt nach 1998 vollständig, dass der DES -Algorithmus nicht mehr sicher ist. 1999 gab NIST einen neuen Standard heraus, der feststellte, dass der Algorithmus nur in Legacy -Verschlüsselungssystemen verwendet werden kann, aber die Verwendung des Dese -Algorithmus nicht einschränkt. Der heutige Des -Algorithmus startet die Geschichte der Geschichte, und der AES -Algorithmus wird als Ersatz bezeichnet.
Verschlüsselungsprinzip:
DES verwendet einen 56-Bit-Schlüssel mit einem zusätzlichen 8-Bit-Paritätsbit, um eine maximale 64-Bit-Paketgröße zu erzeugen. Dies ist ein iteratives Blockkennwort mit einer Technik namens Feistel, bei der verschlüsselte Textblöcke in zwei unterteilt sind. Verwenden Sie einen Unterschlüssel, um die Schleifenfunktion auf eine Hälfte anzuwenden und dann einen "exklusiven oder" Betrieb mit der anderen Hälfte durchzuführen. Dann tauschen Sie diese beiden Hälften aus, und der Vorgang wird fortgesetzt, aber die letzte Schleife wird nicht ausgetauscht. DES verwendet 16 Zyklen, vier grundlegende Operationen: exklusive oder Permutation, Substitution und Verschiebung.
Die Unterstützung von JDK für Des Algorithmus
Schlüssellänge: 56 Bit
Arbeitsmodus: EZB/CBC/PCBC/CTR/CTS/CFB/CFB8 bis CFB128/OFB/OBF8 bis OFB128
Füllmethode: Nopadding/PKCS5Padding/ISO10126Padding/
Java -Verschlüsselungs- und Entschlüsselungssymmetrie -Verschlüsselungsalgorithmus Dese
Dese ist der Triple Des -Verschlüsselungsalgorithmus, der auch als 3DEs oder Triple DES bezeichnet wird. Verwenden Sie drei (oder zwei) verschiedene Schlüssel, um den Datenblock dreimal (oder zwei) von DES zu verschlüsseln (Verschlüsseln einmal ist schneller als die normale Verschlüsselung dreimal). Die Stärke des Triple DES entspricht ungefähr der Schlüsselstärke des 112-Bit. Die Sicherheit wird durch die Anzahl der Iterationen verbessert, verursacht jedoch auch das Problem der niedrigen Verschlüsselungseffizienz. Aufgrund der Effizienz des Dese -Algorithmus wurde der AES -Algorithmus geboren.
Bisher hat niemand einen effektiven Weg gegeben, Triple Des anzugreifen. Wenn Sie in seinem Schlüsselbereich nach den Schlüssel suchen, ist dies tatsächlich nicht machbar, da der Raum zu groß ist. Wenn die Differentialangriffsmethode verwendet wird, nimmt die Komplexität im Vergleich zu einem einzelnen DES exponentiell zu.
Es gibt vier Modelle für Triple DES
Java -Verschlüsselungscode für Des Algorithmus
Paket com.favccxx.codelib; import Java.security.securerandom; import Javax.crypto.cipher; import Javax.crypto.secretkey; Import Javax.crypto.secretkeyfactory; public static byte [] Encrypt (Byte [] src, byte [] key) löst eine Ausnahme aus {// des Algorithmus erfordert eine vertrauenswürdige Quelle für Zufallszahlen Securerandom sr = new Securerandom (); // Erstellen Sie ein Deskeyspec -Objekt aus den ursprünglichen Schlüsseldaten Deskeyspec Dks = New Deskeyspec (Schlüssel); // Erstellen Sie eine Schlüsselfabrik und verwenden Sie es, um Deskeyspec in ein SecretKey -Objekt SecretKeyFactory Keyfactory = SecretKeyFactory.getInstance (DES) umzuwandeln. SecretKey SecureKey = KeyFactory.generateSecret (DKS); // Das Cipher -Objekt vervollständigt tatsächlich die Verschlüsselungsoperation Cipher Cipher = Cipher.getInstance (DES); // Initialisieren Sie das Cipher -Objekt cipher.init (cipher.encrypt_mode, SecureKey, SR); // formelle Ausführung des Verschlüsselungsbetriebs return cipher.dofinal (SRC); } / **** @param Passwort Kennwort* @param Key -Verschlüsselungsstring* @return* / public Final Static String Encrypt (String -Kennwort, String -Schlüssel) {try {return byte2String (Encrypt (password.getBytes (), key.getBytes ()); } catch (Ausnahme e) {} return null; } public static String byte2string (Byte [] b) {String hs = ""; String stmp = ""; für (int n = 0; n <B.Length; n ++) {stmp = (java.lang.Ineger.tohexString (b [n] & 0xff)); if (stmp.length () == 1) hs = hs + "0" + stmp; sonst hs = hs + stmp; } return hsouppercase (); } public static void main (String [] args) {String Encryptstring = Encrypt ("ist Zhang Sanfeng", "Testen Sie chinesische und englische Mischung @123654 {"); System.out.println (EncryptString); } // Ausgabe: B00542E93695F4CFCE34FC4393C2F4BF} Java -Implementierung des DES -Entschlüsselungsalgorithmus
Paket com.favccxx.codelib; import Java.security.securerandom; import Javax.crypto.cipher; import Javax.Crypto.secretkey; Import Javax.crypto.Secretkeyfactory; / ** * * @param src datenquelle * @param Schlüssel, Länge muss ein Vielfaches von 8 * @return * @throws Exception sein */ public static byte [] entschlüsselt (byte [] src, byte [] key) löst eine Ausnahme aus {// Des algorithmus erfordert eine vertrauenswürdige Quelle für zufällige Nummer Securerandom sr = new Securerandom (). // Erstellen Sie ein Deskeyspec -Objekt aus den ursprünglichen Schlüsseldaten Deskeyspec Dks = New Deskeyspec (Schlüssel); // Erstellen Sie eine Schlüsselfabrik und verwenden Sie es dann, um das DeskeySpec -Objekt in ein SecretKey -Objekt SecretKeyFactory Keyfactory = SecretKeyFactory.getInstance (DES) umzuwandeln. SecretKey SecureKey = KeyFactory.generateSecret (DKS); // Das Cipher -Objekt vervollständigt tatsächlich den Entschlüsselungsvorgang Cipher Cipher = Cipher.getInstance (DES); // Initialisieren Sie das Cipher -Objekt cipher.init (Cipher.decrypt_mode, SecureKey, SR); // formelle Ausführung des Entschlüsselungsvorgangs Return Cipher.Dofinal (SRC); } public Final Static String decrypt (String -Daten, String -Schlüssel) {try {return New String (decrypt (string2Byte (data.getBytes ()), Key.getBytes ()); } catch (Ausnahme e) {e.printstacktrace (); } return null; } public static byte [] String2Byte (byte [] b) {if ((b.Length % 2)! = 0) Wirf eine neue illegalArgumentException ("Länge ist nicht einmal"); Byte [] B2 = neues Byte [B.Length / 2]; für (int n = 0; n <B.Length; n += 2) {String item = new String (b, n, 2); B2 [n / 2] = (Byte) Integer.ParseInt (Element, 16); } return b2; } public static void main (String [] args) {String decryptstring = decrypt ("B00542E93695F4CFCE34FC4393C2F4BF", "Testen Sie chinesische und englische Mischung @123654"); System.out.println (Descryptstring); } // Ausgabe: Ist Zhang Sanfeng}Ich hoffe, dieser Artikel wird Ihnen hilfreich sein. Dies ist alles für Sie, um den Analyseinhalt der Java -Implementierung von DES -Verschlüsselungs- und Entschlüsselungsalgorithmus einzuführen. Ich hoffe, dass alle weiterhin unserer Website folgen werden! Wenn Sie Java lernen möchten, können Sie diese Website weiter verfolgen.