Les codes de chiffrement et de décryptage symétriques AES sont introduits en détail pour votre référence. Le contenu spécifique est le suivant
Package Demo.Security; Importer java.io.ioException; Importer java.io.unsupportedEncodingException; Importer java.security.invalidkeyException; import java.security.nosuchalgorithmexception; import java.security.securerArandom; import java.util.base64; import java.util. javax.crypto.badpaddingException; importer javax.crypto.cipher; import javax.crypto.illegalblocksizexception; import javax.crypto.keygenerator; import javax.crypto.nosuchpaddingException; importer javax.crypto.secretkey; import javax.crypto.spe.secretKeyspec; Import Sun.Misc.Base64DecOder; Import Sun.Misc.Base64Encoder; / * * AES Encryption symétrique et décryptage * / classe publique symétricencecoder {/ * * Encryption * 1. Construire le générateur clé *. * 4. Créer et initialiser le mot de passe * 5. Concryption de contenu * 6. Renvoie la chaîne * / public static static aeSencode (String Encoderules, String Content) {try {// 1. Construisez le générateur de clés, spécifié comme l'algorithme AES, et est KeyGenerator KeyGenerator Keygen = KeyGenerator.getInstance ("AES"); // 2. Initialiser le générateur de clés en fonction de la règle EcnoDerules // Générez une source aléatoire 128 bits, et selon le tableau d'octets passé Keygen.init (128, new SecureRandom (Encoderules.getBytes ())); // 3. Générer la clé symétrique d'origine SecretKey Original_key = keygen.generateKey (); // 4. Obtenez le tableau d'octets de l'octet de clé symétrique d'origine [] brut = original_key.getEncoded (); // 5. Générez la clé AES à partir du tableau d'octets SecretKey Key = new SecretKeyspec (brut, "AES"); // 6. Selon l'algorithme spécifié AES CIPHER CRISTOR AES AES AUS AES CIPHER CIPHER = CIPHER.GETINISTANCE ("AES"); // 7. Initialisez le cryptor, le premier paramètre est l'opération de cryptage (ECRYPT_MODE) ou de décryptage et de décryptage (decrypt_mode), et le deuxième paramètre est la clé Cipher.init (cipher.encrypt_mode, clé); // 8. Obtenez la gamme d'octets de contenu chiffré (il doit être défini sur UTF-8 ici). Sinon, s'il y a un chinois et un anglais mixtes dans le contenu, il sera décrypté dans le code brouillé byte [] byte_encode = content.getBytes ("utf-8"); // 9. Selon la méthode d'initialisation du chiffrement Cipher: crypter l'octet de données [] byte_aes = cipher.dofinal (byte_encode); // 10. Convertir les données cryptées en une chaîne // Le package ne sera pas trouvé dans Base64Encoder ici // solution: // Supprimer le supprime d'abord la bibliothèque du système JRE dans le chemin de construction du projet, puis ajoute la bibliothèque du système JRE bibliothèque, tout se passe bien après la recompilation. String aes_encode = new String (new Base64Encoder (). Encode (byte_aes)); // 11. Renvoie la chaîne pour retourner aes_encode; } catch (NosuchalgorithMexception e) {e.printStackTrace (); } catch (nosuchpaddingException e) {e.printStackTrace (); } catch (invalidKeyException e) {e.printStackTrace (); } catch (illégalblockSizeException e) {e.printStackTrace (); } catch (badpaddingException e) {e.printStackTrace (); } catch (UnportEnCcodingException e) {e.printStackTrace (); } // S'il y a une erreur, ajoutez null return null; } / * * Decrypt * Processus de décryptage: * 1. Même étapes de cryptage 1-4 * 2. Inverse a filé la chaîne cryptée dans un byte [] Array * 3. Décript le contenu crypté * / chaîne statique publique aesdncode (Encoderrules de chaîne, contenu de la chaîne) {try {// 1. Construisez le générateur de clés, spécifiez-le comme un algorithme AES et n'est pas une clé de KeyGenerator sensible keygen = keyGenerator.getInstance ("AES"); // 2. Initialiser le générateur de clés en fonction de la règle EcnoDerules // Générez une source aléatoire 128 bits, et selon le tableau d'octets passé Keygen.init (128, new SecureRandom (Encoderules.getBytes ())); // 3. Générer la clé symétrique d'origine SecretKey Original_key = keygen.generateKey (); // 4. Obtenez le tableau d'octets de l'octet de clé symétrique d'origine [] brut = original_key.getEncoded (); // 5. Générer la clé AES basée sur le tableau d'octets SecretKey Key = new SecretKeyspec (brut, "AES"); // 6. Selon l'algorithme spécifié AES Cipher auto-formant, Cipher Cipher = Cipher.getInstance ("AES"); // 7. Initialiser le chiffre, le premier paramètre est l'opération de cryptage (Encrypt_Mode) ou de décryptez (deCrypt_Mode), et le deuxième paramètre est la clé Cipher.init (cipher.decrypt_mode, key); // 8. Décoder le contenu chiffré et codé en un byte d'octet [] byte_content = new base64decoder (). DecodeBuffer (contenu); / * * Decrypt * / byte [] byte_decode = cipher.dofinal (byte_content); String aes_decode = new String (byte_decode, "utf-8"); return aes_decode; } catch (NosuchalgorithMexception e) {e.printStackTrace (); } catch (nosuchpaddingException e) {e.printStackTrace (); } catch (invalidKeyException e) {e.printStackTrace (); } catch (ioException e) {e.printStackTrace (); } catch (illégalblockSizeException e) {e.printStackTrace (); } catch (badpaddingException e) {e.printStackTrace (); } // S'il y a une erreur, ajoutez null return null; } public static void main (String [] args) {symetRiceCcoder se = new SymmetRiceCcoder (); Scanner Scanner = nouveau scanner (System.in); / * * Encryption * / System.out.println ("Utiliser le cryptage symétrique AES, veuillez saisir les règles de chiffrement"); String Encoderules = Scanner.Next (); System.out.println ("Veuillez saisir le contenu à crypter:"); String Content = Scanner.Next (); System.out.println ("Selon la règle d'entrée" + Encoderules + "Le texte chiffré crypté est:" + se.aesencode (codérules, contenu)); / * * Decrypt * / System.out.println ("Utiliser le décryptage symétrique AES, veuillez saisir les règles de chiffrement: (doit être la même que le cryptage)"); Encoderules = Scanner.Next (); System.out.println ("Veuillez saisir le contenu à décrypter (CipherText):"); Content = Scanner.Next (); System.out.println ("Selon les règles d'entrée" + Encoderules + "Le texte brut décrypté est:" + se.aesdncode (Encoderules, Contenu)); }} Résultats des tests:
Utilisez le cryptage symétrique AES, veuillez saisir les règles de chiffrement. Utilisez le cryptage symétrique AES. Veuillez saisir le contenu que vous souhaitez crypter:
Utilisez AES Cryptage symétrique Le texte chiffré crypté est: Z0NWRnPHGHGXHN0CQJLS58YCJHMCBFER33RWS7LW + AY =
Utilisez le décryptage symétrique AES, veuillez saisir les règles de chiffrement: (doit être la même que le cryptage)
Utilisez un cryptage symétrique AES pour entrer le contenu (CipherText):
Z0nwrnPhGHGXHN0CQJLS58YCJHMCBFER33RWS7LW + AY =
Le texte en clair décrypté à l'aide du cryptage symétrique AES selon les règles d'entrée est: Utilisez le cryptage symétrique AES
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.