AESUtil.java 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. package edu.nju.util;
  2. import javax.crypto.Cipher;
  3. import javax.crypto.spec.IvParameterSpec;
  4. import javax.crypto.spec.SecretKeySpec;
  5. import java.net.URLEncoder;
  6. import java.util.Base64;
  7. public class AESUtil {
  8. //偏移量
  9. private static String IV ="mooctestmooctest";
  10. //钥匙
  11. private static String KEY = "TESTMOOCTESTMOOC";
  12. //加密
  13. public static String encrypt(String str) {
  14. try {
  15. byte[] bytes = str.getBytes();
  16. IvParameterSpec ivParameterSpec = new IvParameterSpec(IV.getBytes());
  17. SecretKeySpec secretKeySpec = new SecretKeySpec(KEY.getBytes(), "AES");
  18. Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
  19. cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec, ivParameterSpec);
  20. bytes = cipher.doFinal(bytes);
  21. bytes = Base64.getEncoder().encode(bytes);
  22. String res = new String(bytes);
  23. return URLEncoder.encode(res);
  24. } catch (Exception e) {
  25. e.printStackTrace();
  26. return null;
  27. }
  28. }
  29. //解密
  30. public static String decrypt(String str) {
  31. try {
  32. byte[] bytes = Base64.getDecoder().decode(str);
  33. IvParameterSpec ivParameterSpec = new IvParameterSpec(IV.getBytes());
  34. SecretKeySpec secretKeySpec = new SecretKeySpec(KEY.getBytes(), "AES");
  35. Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
  36. cipher.init(Cipher.DECRYPT_MODE, secretKeySpec, ivParameterSpec);
  37. bytes = cipher.doFinal(bytes);
  38. return new String(bytes);
  39. } catch (Exception e) {
  40. e.printStackTrace();
  41. return null;
  42. }
  43. }
  44. }