1. package utils;
    2. import javax.crypto.Cipher;
    3. import javax.crypto.spec.SecretKeySpec;
    4. import java.util.Base64;
    5. /***
    6. *@author lixianbin
    7. *@desc
    8. *@date created in 2021/7/6
    9. **/
    10. public class AESUtil {
    11. /**
    12. * AES加密
    13. * @param sSrc
    14. * @param sKey
    15. * @return
    16. */
    17. public static String Encrypt(String sSrc, String sKey){
    18. try {
    19. byte[] raw = sKey.getBytes("UTF-8");
    20. SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
    21. //"算法/模式/补码方式"
    22. Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
    23. cipher.init(Cipher.ENCRYPT_MODE, skeySpec);
    24. byte[] encrypted = cipher.doFinal(sSrc.getBytes("UTF-8"));
    25. //此处使用BASE64做转码功能,同时能起到2次加密的作用。
    26. return Base64.getEncoder().encodeToString(encrypted);
    27. } catch (Exception ex) {
    28. ex.printStackTrace();
    29. }
    30. return null;
    31. }
    32. /**
    33. * AES解密
    34. * @param sSrc
    35. * @param sKey
    36. * @return
    37. */
    38. public static String AESDecrypt(String sSrc, String sKey) {
    39. try {
    40. byte[] raw = sKey.getBytes("UTF-8");
    41. SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
    42. Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
    43. cipher.init(Cipher.DECRYPT_MODE, skeySpec);
    44. //先用base64解密
    45. byte[] encrypted1 = Base64.getDecoder().decode(sSrc);
    46. byte[] original = cipher.doFinal(encrypted1);
    47. String originalString = new String(original, "UTF-8");
    48. return originalString;
    49. } catch (Exception ex) {
    50. ex.printStackTrace();
    51. }
    52. return null;
    53. }
    54. }