Il y a deux phrases qui disent ceci:
1) Les algorithmes et les structures de données sont une partie importante de la programmation.
2) La programmation est des algorithmes et des structures de données, et les algorithmes et les structures de données sont l'âme de la programmation.
Notez que ce n'est pas ce que j'ai dit, il a été résumé par d'innombrables programmeurs. Il comprend trois algorithmes de chiffrement symétriques: DES, 3DES et AES, et est plein d'informations pratiques.
1. Algorithme de mot de passe symétrique
L'algorithme de cryptographie symétrique est l'algorithme de cryptage le plus utilisé et le plus fréquemment utilisé aujourd'hui. Il est non seulement utilisé dans l'industrie du logiciel, mais aussi populaire dans l'industrie du matériel. Toutes sortes d'infrastructures donneront la priorité aux algorithmes de chiffrement symétriques chaque fois qu'ils impliquent des besoins de sécurité.
La clé de cryptage et la clé de décryptage de l'algorithme de cryptographie symétrique sont les mêmes.
(1) crypter et décrypter le modèle de communication
(2) Caractéristiques: algorithme ouvert, petit volume de calcul, vitesse de chiffrement rapide, efficacité de chiffrement élevée
(3) Faiblesse: les deux parties utilisent la même clé et la sécurité n'est pas garantie
Il existe deux types de mots de passe symétriques: diffusez le mot de passe et le mot de passe du paquet, mais maintenant le mot de passe de bloc est couramment utilisé:
(4) Bloquer le mode de travail du mot de passe
1) BEC: Cipherbook électronique (le plus souvent utilisé, chaque chiffrement génère des paquets de texte chiffré indépendants et n'affectera pas d'autres paquets de texte chiffré, c'est-à-dire que le même texte en clair est généré après le cryptage)
2) CBC: lien de texte chiffre (couramment utilisé. Avant le cryptage en texte clair, vous devez effectuer un fonctionnement XOR avec le texte chiffré précédent, c'est-à-dire que différents textes chiffres sont générés après le même chiffrement en texte brut)
En plus de ces deux modes de travail couramment utilisés, il y a:
3) CFB: commentaires du mot de passe
4) OFB: rétroaction de sortie
5) CTR: compteur
Ces cinq modes de travail sont principalement appliqués par des algorithmes en cryptographie lors de la réalisation de calculs de dérivation.
6. Comment remplir les mots de passe des blocs
1) Nopadding: pas de remplissage
2) PKCS5PADDING:
3) ISO10126PADDING:
7. Mots de passe symétriques couramment utilisés:
1) DES (Norme de chiffrement des données, norme de chiffrement des données)
2) 3DES (Triple Des, Deede, algorithme de cryptage Triple Des)
3) AES (norme de chiffrement avancé, norme de chiffrement avancée des données, l'algorithme AES peut résister efficacement aux algorithmes d'attaque contre DES)
Jetons d'abord un coup d'œil à une comparaison simple de ces trois algorithmes:
| algorithme | Longueur de clé | Longueur de clé par défaut | Mode de travail | Méthode de remplissage |
|---|---|---|---|---|
| Des | 56 | 56 | ECB, CBC, PCBC, CTR, CTS, CFB, CFB8-CFB128, OFB, OFB8-OFB128 | Nopadding, PKCS5PADDING, ISO10126PADDING |
| 3des | 112, 168 | 168 | ECB, CBC, PCBC, CTR, CTS, CFB, CFB8-CFB128, OFB, OFB8-OFB128 | Nopadding, PKCS5PADDING, ISO10126PADDING |
| Stimulation | 128, 192, 256 | 128 | ECB, CBC, PCBC, CTR, CTS, CFB, CFB8-CFB128, OFB, OFB8-OFB128 | Nopadding, PKCS5PADDING, ISO10126PADDING |
Voyons comment utiliser trois algorithmes de DES / 3DES / AES pour implémenter un chiffrement symétrique:
2. Des algorithmes
1.DES: Norme de chiffrement des données, un algorithme typique dans le domaine des algorithmes de chiffrement symétrique
2. Caractéristiques: La clé est courte (56 bits), cycle de vie court (éviter la fissuration)
3. Implémentation Java
1) Générer une clé
KeyGenerator keygen = keyGenerator.getInstance ("DES"); // Générateur de clés keygen.init (56); // initialise le générateur de clés SecretKey SecretKey = Keygen.GenateReyKey (); // Générer l'octet de clé [] key = SecretKey.getEncoded (); // Clé Tableau de l'octet de clés2) cryptage
SecretKey SecretKey = new SecretKeyspec (Key, "DES"); // Récupérer Key Cipher Cipher = Cipher.getInstance ("DES"); // Cipher termine le chiffrement ou décrypte la classe ouvrière Cipher.init (Cipher.Encrypt_Mode, SecretKey); // Initializing Cipher, Encryptions Byte [] CipherByte = Cipher.3) décryptage
SecretKey SecretKey = New SecretKeyspec (Key, "DES"); // Récupérer Key Cipher Cipher = Cipher.getInstance ("DES"); // Cipher termine le cryptage ou les décryptations de la classe ouvrière. donnéesNous pouvons constater que nous définissons différents modes de chiffrement et de décryptage.
3,3des algorithme
1.3des: augmentez la longueur de clé à 112 ou 168 bits et améliorez la sécurité en augmentant le nombre d'itérations.
2. Inconvénients: vitesse de traitement lente, temps de calcul à long terme et faible efficacité de cryptage
3. Implémentation Java
1) Générer une clé
KeyGenerator keygen = keyGenerator.getInstance ("Deede"); // Générateur de clés keygen.init (168);2) cryptage 3des
SecretKey SecretKey = new SecretKeyspec (Key, "Deede"); // Récupérer Key Cipher Cipher = Cipher.getInstance ("Deede"); // Cipher termine le cryptage ou le décryptage de la classe ouvrière Cipher.init (Cipher.encrypt_mode, Secretkey); s données3) décryptage 3des
SecretKey SecretKey = New SecretKeyspec (Key, "Deede"); // Récupérer Key Cipher Cipher = Cipher.getInstance ("Deede"); // Cipher termine le chiffrement ou le décryptage de la classe ouvrière Cipher.init données de pts4. Algorithme AES (recommandé)
1.AES: Norme de cryptage avancé des données, capable de résister efficacement à toutes les attaques connues contre les algorithmes DES
2. Caractéristiques: Temps d'établissement de la clé courte, bonne sensibilité, exigences de mémoire faible et haute sécurité
3. Implémentation Java
1) Générer une clé
KeyGenerator keygen = keyGenerator.getInstance ("AES"); // Générateur de clés keygen.init (128);2) cryptage AES
SecretKey SecretKey = new SecretKeyspec (Key, "AES"); // Recovery Key Cipher Cipher = Cipher.getInstance ("AES"); // Cipher termine le chiffrement ou le décryptage de la classe ouvrière Cipher.Init (Cipher.encrypt_mode, Secretkey); s données3) Décryptage AES
SecretKey SecretKey = New SecretKeyspec (Key, "AES"); // Récupérer Key Cipher Cipher = Cipher.getInstance ("AES"); // Cipher termine le chiffrement ou le décryptage de la classe ouvrière Cipher.init données de ptsPour plus de commodité d'utilisation, j'ai des classes d'outils écrites pour les algorithmes DES / 3DES / AES, adresse: adresse de téléchargement (nouvelle classe d'outils DES / 3DES / AES).
À ce stade, les trois algorithmes de DES / 3DES / AES sont tous effectués pour implémenter le cryptage symétrique. J'espère que cela sera utile à l'apprentissage de tous, et j'espère que tout le monde soutiendra davantage Wulin.com.