日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java 加密 AES 对称加密算法

發布時間:2025/5/22 java 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java 加密 AES 对称加密算法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

【AES】

一種對稱加密算法,DES的取代者。

加密相關文章見:Java 加密解密 對稱加密算法 非對稱加密算法 MD5 BASE64 AES RSA


【代碼】

代碼比較多,有一部分非本文章內容代碼,具體自己看吧。

[java] view plaincopy
  • package?com.uikoo9.util.encrypt;??
  • ??
  • import?java.math.BigInteger;??
  • import?java.security.MessageDigest;??
  • import?java.security.SecureRandom;??
  • ??
  • import?javax.crypto.Cipher;??
  • import?javax.crypto.KeyGenerator;??
  • import?javax.crypto.spec.SecretKeySpec;??
  • ??
  • import?sun.misc.BASE64Decoder;??
  • import?sun.misc.BASE64Encoder;??
  • ??
  • import?com.uikoo9.util.QStringUtil;??
  • ??
  • /**?
  • ?*?編碼工具類?
  • ?*?1.將byte[]轉為各種進制的字符串?
  • ?*?2.base?64?encode?
  • ?*?3.base?64?decode?
  • ?*?4.獲取byte[]的md5值?
  • ?*?5.獲取字符串md5值?
  • ?*?6.結合base64實現md5加密?
  • ?*?7.AES加密?
  • ?*?8.AES加密為base?64?code?
  • ?*?9.AES解密?
  • ?*?10.將base?64?code?AES解密?
  • ?*?@author?uikoo9?
  • ?*?@version?0.0.7.20140601?
  • ?*/??
  • public?class?QEncodeUtil?{??
  • ??????
  • ????public?static?void?main(String[]?args)?throws?Exception?{??
  • ????????String?content?=?"我愛你";??
  • ????????System.out.println("加密前:"?+?content);??
  • ??
  • ????????String?key?=?"123456";??
  • ????????System.out.println("加密密鑰和解密密鑰:"?+?key);??
  • ??????????
  • ????????String?encrypt?=?aesEncrypt(content,?key);??
  • ????????System.out.println("加密后:"?+?encrypt);??
  • ??????????
  • ????????String?decrypt?=?aesDecrypt(encrypt,?key);??
  • ????????System.out.println("解密后:"?+?decrypt);??
  • ????}??
  • ??????
  • ????/**?
  • ?????*?將byte[]轉為各種進制的字符串?
  • ?????*?@param?bytes?byte[]?
  • ?????*?@param?radix?可以轉換進制的范圍,從Character.MIN_RADIX到Character.MAX_RADIX,超出范圍后變為10進制?
  • ?????*?@return?轉換后的字符串?
  • ?????*/??
  • ????public?static?String?binary(byte[]?bytes,?int?radix){??
  • ????????return?new?BigInteger(1,?bytes).toString(radix);//?這里的1代表正數??
  • ????}??
  • ??????
  • ????/**?
  • ?????*?base?64?encode?
  • ?????*?@param?bytes?待編碼的byte[]?
  • ?????*?@return?編碼后的base?64?code?
  • ?????*/??
  • ????public?static?String?base64Encode(byte[]?bytes){??
  • ????????return?new?BASE64Encoder().encode(bytes);??
  • ????}??
  • ??????
  • ????/**?
  • ?????*?base?64?decode?
  • ?????*?@param?base64Code?待解碼的base?64?code?
  • ?????*?@return?解碼后的byte[]?
  • ?????*?@throws?Exception?
  • ?????*/??
  • ????public?static?byte[]?base64Decode(String?base64Code)?throws?Exception{??
  • ????????return?QStringUtil.isEmpty(base64Code)???null?:?new?BASE64Decoder().decodeBuffer(base64Code);??
  • ????}??
  • ??????
  • ????/**?
  • ?????*?獲取byte[]的md5值?
  • ?????*?@param?bytes?byte[]?
  • ?????*?@return?md5?
  • ?????*?@throws?Exception?
  • ?????*/??
  • ????public?static?byte[]?md5(byte[]?bytes)?throws?Exception?{??
  • ????????MessageDigest?md?=?MessageDigest.getInstance("MD5");??
  • ????????md.update(bytes);??
  • ??????????
  • ????????return?md.digest();??
  • ????}??
  • ??????
  • ????/**?
  • ?????*?獲取字符串md5值?
  • ?????*?@param?msg??
  • ?????*?@return?md5?
  • ?????*?@throws?Exception?
  • ?????*/??
  • ????public?static?byte[]?md5(String?msg)?throws?Exception?{??
  • ????????return?QStringUtil.isEmpty(msg)???null?:?md5(msg.getBytes());??
  • ????}??
  • ??????
  • ????/**?
  • ?????*?結合base64實現md5加密?
  • ?????*?@param?msg?待加密字符串?
  • ?????*?@return?獲取md5后轉為base64?
  • ?????*?@throws?Exception?
  • ?????*/??
  • ????public?static?String?md5Encrypt(String?msg)?throws?Exception{??
  • ????????return?QStringUtil.isEmpty(msg)???null?:?base64Encode(md5(msg));??
  • ????}??
  • ??????
  • ????/**?
  • ?????*?AES加密?
  • ?????*?@param?content?待加密的內容?
  • ?????*?@param?encryptKey?加密密鑰?
  • ?????*?@return?加密后的byte[]?
  • ?????*?@throws?Exception?
  • ?????*/??
  • ????public?static?byte[]?aesEncryptToBytes(String?content,?String?encryptKey)?throws?Exception?{??
  • ????????KeyGenerator?kgen?=?KeyGenerator.getInstance("AES");??
  • ????????kgen.init(128,?new?SecureRandom(encryptKey.getBytes()));??
  • ??
  • ????????Cipher?cipher?=?Cipher.getInstance("AES");??
  • ????????cipher.init(Cipher.ENCRYPT_MODE,?new?SecretKeySpec(kgen.generateKey().getEncoded(),?"AES"));??
  • ??????????
  • ????????return?cipher.doFinal(content.getBytes("utf-8"));??
  • ????}??
  • ??????
  • ????/**?
  • ?????*?AES加密為base?64?code?
  • ?????*?@param?content?待加密的內容?
  • ?????*?@param?encryptKey?加密密鑰?
  • ?????*?@return?加密后的base?64?code?
  • ?????*?@throws?Exception?
  • ?????*/??
  • ????public?static?String?aesEncrypt(String?content,?String?encryptKey)?throws?Exception?{??
  • ????????return?base64Encode(aesEncryptToBytes(content,?encryptKey));??
  • ????}??
  • ??????
  • ????/**?
  • ?????*?AES解密?
  • ?????*?@param?encryptBytes?待解密的byte[]?
  • ?????*?@param?decryptKey?解密密鑰?
  • ?????*?@return?解密后的String?
  • ?????*?@throws?Exception?
  • ?????*/??
  • ????public?static?String?aesDecryptByBytes(byte[]?encryptBytes,?String?decryptKey)?throws?Exception?{??
  • ????????KeyGenerator?kgen?=?KeyGenerator.getInstance("AES");??
  • ????????kgen.init(128,?new?SecureRandom(decryptKey.getBytes()));??
  • ??????????
  • ????????Cipher?cipher?=?Cipher.getInstance("AES");??
  • ????????cipher.init(Cipher.DECRYPT_MODE,?new?SecretKeySpec(kgen.generateKey().getEncoded(),?"AES"));??
  • ????????byte[]?decryptBytes?=?cipher.doFinal(encryptBytes);??
  • ??????????
  • ????????return?new?String(decryptBytes);??
  • ????}??
  • ??????
  • ????/**?
  • ?????*?將base?64?code?AES解密?
  • ?????*?@param?encryptStr?待解密的base?64?code?
  • ?????*?@param?decryptKey?解密密鑰?
  • ?????*?@return?解密后的string?
  • ?????*?@throws?Exception?
  • ?????*/??
  • ????public?static?String?aesDecrypt(String?encryptStr,?String?decryptKey)?throws?Exception?{??
  • ????????return?QStringUtil.isEmpty(encryptStr)???null?:?aesDecryptByBytes(base64Decode(encryptStr),?decryptKey);??
  • ????}??
  • ??????
  • }??

  • 【輸出】

    [java] view plaincopy
  • 加密前:我愛你??
  • 加密密鑰和解密密鑰:123456??
  • 加密后:A63fa7DjAe3yYji44BTm1g==??
  • 解密后:我愛你?
  • 轉載于:https://www.cnblogs.com/Free-Thinker/p/5824641.html

    總結

    以上是生活随笔為你收集整理的Java 加密 AES 对称加密算法的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。