Es gibt zwei Sätze, die Folgendes sagen:
1) Algorithmen und Datenstrukturen sind ein wichtiger Bestandteil der Programmierung. Wenn Sie die Algorithmen und Datenstrukturen verlieren, verlieren Sie alles.
2) Die Programmierung sind Algorithmen und Datenstrukturen, und Algorithmen und Datenstrukturen sind die Seele der Programmierung.
Beachten Sie, dass dies nicht das ist, was ich gesagt habe, es wurde von unzähligen Programmierern zusammengefasst. Es ist sehr realistisch und aufschlussreich. Wenn Sie sich lange Zeit kontinuierlich entwickeln möchten, ist es immer noch erforderlich, mehr Algorithmen zu studieren. Heute werde ich Ihnen von den symmetrischen Verschlüsselungsalgorithmen in Verschlüsselungsalgorithmen erzählen, und hier werde ich Ihnen die Programmierung und Verwendung symmetrischer Verschlüsselungsalgorithmen beibringen. Es enthält drei symmetrische Verschlüsselungsalgorithmen: DES, 3DES und AES und ist voller praktischer Informationen.
1. Symmetrischer Passwortalgorithmus
Der symmetrische Kryptographiealgorithmus ist heute der am häufigsten verwendete und am häufigsten verwendete Verschlüsselungsalgorithmus. Es wird nicht nur in der Softwareindustrie verwendet, sondern auch in der Hardwarebranche beliebt. Alle Arten von Infrastrukturen geben symmetrischen Verschlüsselungsalgorithmen Priorität, wenn sie Sicherheitsanforderungen beinhalten.
Der Verschlüsselungsschlüssel und der Entschlüsselungsschlüssel des symmetrischen Kryptographie -Algorithmus sind gleich. Für die meisten symmetrischen Kryptographie -Algorithmen ist der Verschlüsselungs- und Entschlüsselungsprozess umgekehrt miteinander verbunden.
(1) Kommunikationsmodell verschlüsseln und entschlüsseln
(2) Merkmale: Offener Algorithmus, kleines Berechnungsvolumen, schnelle Verschlüsselungsgeschwindigkeit, hohe Verschlüsselungseffizienz
(3) Schwäche: Beide Parteien verwenden den gleichen Schlüssel, und die Sicherheit ist nicht garantiert
Es gibt zwei Arten von symmetrischen Kennwörtern: Stream Passwort und Paketkennwort, aber jetzt wird das Blockkennwort üblicherweise verwendet:
(4) Block Passwort -Arbeitsmodus blockieren
1) EZB: Elektronisches Cipherbook (Die am häufigsten verwendete Verschlüsselung erzeugt unabhängige Chiffretextpakete und wirkt sich nicht auf andere Ciphertext -Pakete aus, dh derselbe Klartext wird nach der Verschlüsselung generiert)
2) CBC: CipheText Link (häufig verwendet. Vor der Klartextverschlüsselung müssen Sie den XOR -Betrieb mit dem vorherigen Chiffretext durchführen, dh verschiedene Chiffretexte werden nach derselben Klartext -Verschlüsselung generiert)
Zusätzlich zu diesen beiden häufig verwendeten Arbeitsmodi gibt es:
3) CFB: Passwort -Feedback
4) OFB: Feedback ausgeben
5) CTR: Zähler
Diese fünf Arbeitsmodi werden hauptsächlich durch Algorithmen in der Kryptographie bei der Durchführung von Ableitungsberechnungen angewendet.
6. So füllen Sie Blockkennwörter aus
1) Nopadding: Keine Füllung
2) PKCS5Padding:
3) ISO10126Padding:
7. häufig verwendete symmetrische Passwörter:
1) DES (Datenverschlüsselungsstandard, Datenverschlüsselungsstandard)
2) 3DEs (Triple Des, Dese, Triple Des Verschlüsselungsalgorithmus)
3) AES (Advanced Encryption Standard, Advanced Data Encryption Standard, AES -Algorithmus kann den Angriffsalgorithmen gegen DES wirksam widerstehen)
Schauen wir uns zunächst einen einfachen Vergleich dieser drei Algorithmen an:
| Algorithmus | Schlüssellänge | Standardschlüssellänge | Arbeitsmodus | Füllmethode |
|---|---|---|---|---|
| Des | 56 | 56 | EZB, CBC, PCBC, CTR, CTS, CFB, CFB8-CFB128, OFB, OFB8-OFB128 | Nopadding, PKCS5Padding, ISO10126Padding |
| 3des | 112, 168 | 168 | EZB, CBC, PCBC, CTR, CTS, CFB, CFB8-CFB128, OFB, OFB8-OFB128 | Nopadding, PKCS5Padding, ISO10126Padding |
| AES | 128, 192, 256 | 128 | EZB, CBC, PCBC, CTR, CTS, CFB, CFB8-CFB128, OFB, OFB8-OFB128 | Nopadding, PKCS5Padding, ISO10126Padding |
Lassen Sie uns sehen, wie drei Algorithmen von DES/3DES/AES verwendet werden, um eine symmetrische Verschlüsselung zu implementieren:
2. Des Algorithmus
1.DES: Datenverschlüsselungsstandard, ein typischer Algorithmus im Bereich der symmetrischen Verschlüsselungsalgorithmen
2. Merkmale: Der Schlüssel ist kurz (56 Bit), kurzer Lebenszyklus (Vermeidung von Rissen)
3. Java -Implementierung
1) Generieren Sie einen Schlüssel
KeyGenerator keyGen = KeyGenerator.getInstance("DES");//Key Generator keyGen.init(56);//Initialize the key generator SecretKey secretKey = keyGen.generateKey();//Generate key byte[] key = secretKey.getEncoded();//Key byte array2) Verschlüsselung
SecretKey SecretKey = New SecretKeyspec (Schlüssel, "Des"); // Key Cipher Cipher = Cipher.getInstance ("Des"); // Cipher vervollständigt die Verschlüsselung oder entschlüsselt die Arbeiterklasse. cipher.dofinal (Daten); // verschlüsselt Daten3) Entschlüsselung
SecretKey SecretKey = New SecretKeySpec (Schlüssel, "Des"); // Key Cipher Cipher = Cipher.getInstance ("Des"); // Cipher vervollständigt die Verschlüsselung oder entschlüsselt die Arbeiterklasse Cipher.init (Cipher.decrypt_mode, SecretKey). cipher.dofinal (Daten); // Entschlüsselt DatenWir können feststellen, dass wir nur verschiedene Modi für Verschlüsselung und Entschlüsselung festlegen.
3.3DES -Algorithmus
1.3DEs: Erhöhen Sie die Schlüssellänge auf 112 oder 168 Bit und verbessern Sie die Sicherheit, indem Sie die Anzahl der Iterationen erhöhen.
2. Nachteile: Verlangsame Verarbeitungsgeschwindigkeit, lange Schlüsselberechnungszeit und niedrige Verschlüsselungseffizienz
3. Java -Implementierung
1) Generieren Sie einen Schlüssel
Keygenerator keygen = keygenerator.getInstance ("Dese"); // Schlüsselgenerator Keygen.init (168); // Die Schlüssellänge kann als 112 oder 168 angegeben werden, und der Standard ist 168. SecretKey SecretKey = Keygen.GenerateKey (); // Generieren Sie Schlüssel Byte [] key = secryKey.getEcoded (); // Schlüssel Byte -Array2) 3DES -Verschlüsselung
SecretKey SecretKey = New SecretKeySpec (Schlüssel, "Beeinträchtigung"); // Key Cipher Cipher = Cipher.getInstance ("Desede"); // Cipher vervollständigt die Verschlüsselung oder Entschlüsselung von Arbeiterklassen -Cipher.init (Cipher.crypt_mode, Sekretykey). cipher.dofinal (Daten); // verschlüsselt Daten3) 3des entschlüsselt
SecretKey SecretKey = New SecretKeySpec (Schlüssel, "Desede"); // Key Cipher Cipher = Cipher.GetInstance ("Desede"); // Cipher vervollständigt die Verschlüsselung oder Entschlüsselung von Arbeiterklasse Cipher. cipher.dofinal (Daten); // Entschlüsselt Daten4. AES -Algorithmus (empfohlen)
1.AES: Fortgeschrittener Datenverschlüsselungsstandard, der allen bekannten Angriffen gegen DES -Algorithmen effektiv widerstehen kann
2. Merkmale: Kurzschlüsselungszeit, gute Empfindlichkeit, geringe Speicheranforderungen und hohe Sicherheit
3. Java -Implementierung
1) Generieren Sie einen Schlüssel
Keygenerator keygen = keygenerator.getInstance ("aes"); // Schlüsselgenerator Keygen.init (128); // Standard 128, nachdem es keine politischen Berechtigungen erhalten hatte, kann es 192 oder 256secretkey SecretKey = keygen.generateKey () sein; // TEYSE -BYTE [] KEY = SecretKey.getEcoded (); // Schlüssel -Byte -Array erzeugen2) AES -Verschlüsselung
SecretKey SecretKey = New SecretKeySpec (Schlüssel, "AES"); // Wiederherstellung Schlüssel Cipher Cipher = Cipher.getInstance ("AES"); // Cipher vervollständigt die Verschlüsselung oder Entschlüsselung der Arbeiterklasse Cipher.init (Cipher.encrypt_mode, Sekretyty). cipher.dofinal (Daten); // verschlüsselt Daten3) AES Entschlüsselung
SecretKey secretKey = new SecretKeySpec(key, "AES");//Recover key Cipher cipher = Cipher.getInstance("AES");//Cipher completes encryption or decryption of working class cipher.init(Cipher.DECRYPT_MODE, secretKey);//Initializes Cipher, decrypts mode byte[] cipherByte = cipher.dofinal (Daten); // Entschlüsselt DatenFür die Verwendung der Verwendung habe ich schriftliche Werkzeugkurse für DES/3DES/AES -Algorithmen, Adresse: Download -Adresse (neue DES/3DES/AES -Werkzeugklasse).
Zu diesem Zeitpunkt werden die drei Algorithmen von DES/3DES/AES durchgeführt, um eine symmetrische Verschlüsselung zu implementieren. Ich hoffe, es wird für das Lernen aller hilfreich sein, und ich hoffe, jeder wird Wulin.com mehr unterstützen.