Cet article décrit les fonctions de chiffrement et de décryptage implémentées par Java sur la base de l'algorithme de cryptage symétrique AES. Partagez-le pour votre référence, comme suit:
Package com.soufun.com; Importer java.io.unsupportEnCoDingException; import java.security.invalidkeyexception; import java.security.nosuchalgorithmexception; import java.security.securerandom; import java.util.date; import javax.crypto.badpaddingexception; javax.crypto.cipher; importer javax.crypto.illegalblockSizeException; import javax.crypto.keygenerator; import javax.crypto.nosuchpaddingException; import javax.crypto.secretkey; importer javax.crypto.spec.secretkeyspec; AesUtil {private static final string aes = "aes"; chaîne finale statique privée utf8 = "utf-8"; KeyGenerator statique Kgen = null; statique {try {kgen = keyGenerator.getInstance (aes); } Catch (NosuchalgorithMexception e) {// Bloc de capture généré automatiquement de TODO E.PrintStackTrace (); }} / * * @param contenu: * @param mot de passe: * / byte statique privé [] Encrypt (contenu de chaîne, mot de passe de chaîne) {try {// Utilisez des blocs de code statique pour générer l'objet KeyGenerator // keyGenerator kgen = keyGenerator.getInStance (aes); // utilise 128 bits kgen.init (128, new SecureRandom (mot de passe.GetBytes ())); SecretKey SecretKey = Kgen.GenateReyKey (); Byte [] EncodeFormat = SecretKey.getEncoded (); SecretKeyspec Key = new SecretKeyspec (EncodeFormat, AES); // L'objet Cipher complète en fait l'opération de chiffrement Cipher Cipher = Cipher.getInstance (AES); // Cryptez le contenu du codage byte [] byteContent = content.getBytes (UTF8); // Initialisez l'objet Cipher Cipher.init (cipher.encrypt_mode, key); // Exécuter l'opération de chiffrement BYTE [] result = cipher.dofinal (byteContent); Résultat de retour; } catch (NosuchalgorithMexception e) {e.printStackTrace (); } catch (nosuchpaddingException e) {e.printStackTrace (); } catch (invalidKeyException e) {e.printStackTrace (); } catch (UnportEnCcodingException e) {e.printStackTrace (); } catch (illégalblockSizeException e) {e.printStackTrace (); } catch (badpaddingException e) {e.printStackTrace (); } return null; } / * * @param contenu: * @param mot de passe: * / private static byte [] decrypt (byte [] contenu, chaîne mot de passe) {try {// Utilisez des blocs de code statique pour générer l'objet KeyGenerator // keyGenerator kgen = keyGenerator.getInstance (aes); // utilise 128 bits kgen.init (128, new SecureRandom (mot de passe.GetBytes ())); SecretKey SecretKey = Kgen.GenateReyKey (); Byte [] EncodeFormat = SecretKey.getEncoded (); SecretKeyspec Key = new SecretKeyspec (EncodeFormat, AES); // L'objet Cipher complète en fait l'opération de chiffrement Cipher Cipher = Cipher.getInstance (AES); // Initialisez l'objet Cipher avec une clé Cipher.init (cipher.decrypt_mode, key); // Exécution formelle de l'opération de décryptage BYTE [] result = cipher.dofinal (contenu); Résultat de retour; } 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 (); } return null; } / ** * binaire -》 Conversion hexadémique * @param buf * @return * / private static string parsebyte2hexstr (byte buf []) {stringBuffer sb = new StringBuffer (); for (int i = 0; i <buf.length; i ++) {String hex = Integer.tohexString (buf [i] & 0xff); if (hex.length () == 1) {hex = '0' + hex; } sb.append (hex.touppercase ()); } return sb.toString (); } / ** * hex -》 Conversion binaire * @param hexstr * @return * / octet statique privé [] parsehexstr2byte (string hexstr) {if (hexstr.length () <1) {return null; } octet [] result = nouveau octet [hexstr.length () / 2]; for (int i = 0; i <hexstr.length () / 2; i ++) {int high = Integer.ParseInt (hexstr.substring (i * 2, i * 2 + 1), 16); int low = Integer.ParseInt (hexstr.substring (i * 2 + 1, i * 2 + 2), 16); résultat [i] = (byte) (élevé * 16 + bas); } Retour Résultat; } public static void main (string [] args) lève unportdencodingException {long begin = new Date (). getTime (); String Content = "Aaades Encryption Test"; String mot de passe = "12345678dd"; // Encrypt System.out.println ("Avant le chiffrement:" + Contenu); octet [] EncryPtreult = Encrypt (contenu, mot de passe); String EncrypTreSultRstr = ParseByte2Hexstr (EncryPtreSult); System.out.println ("After Encrypt:" + EncryptreSultStr); // Decrypt byte [] decrypptfrom = parsehexstr2byte (EncryptreSultStr); octet [] decryptreult = decrypt (decryptFrom, mot de passe); // Decrypt Contenu pour le décodage de chaîne Résultat = new String (decryPtreult, UTF8); System.out.println ("Après le décryptage:" + résultat); long fin = new Date (). getTime (); System.out.println (End-Begin); }}Remarque: SecureRandom génère une séquence de nombres aléatoires sûrs, Motword.GetBytes () est une graine. Tant que la graine est la même, la séquence est la même. Par conséquent, tant qu'il y a un mot de passe, le déchiffrement peut être effectué et cette séquence peut être restaurée.
PS: Les amis qui sont intéressés par le cryptage et le décryptage peuvent également se référer aux outils en ligne de ce site:
Détection en ligne de sécurité de mot de passe:
http://tools.vevb.com/password/my_password_safe
Générateur de mots de passe à haute résistance:
http://tools.vevb.com/password/createstrongpassword
Outils de chiffrement / décryptage des URL express et express et de tornade:
http://tools.vevb.com/password/urlrethunder
Outil de chiffrement en ligne de hachage / hachage de hachage:
http://tools.vevb.com/password/hash_encrypt
MD5 / HASH / SHA-1 / SHA-2 / SHA-256 / SHA-512 / SHA-3 / RIMEMD-160 Tool:
http://tools.vevb.com/password/hash_md5_sha
En ligne SHA1 / SHA224 / SHA256 / SHA384 / SHA512 Outil de cryptage:
http://tools.vevb.com/password/sha_encode
J'espère que cet article sera utile à la programmation Java de tous.