EncodeUtil.java 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199
  1. package com.simuwang.base.common.util;
  2. import javax.crypto.*;
  3. import javax.crypto.spec.DESKeySpec;
  4. import javax.crypto.spec.SecretKeySpec;
  5. import java.io.UnsupportedEncodingException;
  6. import java.net.URLDecoder;
  7. import java.net.URLEncoder;
  8. import java.nio.charset.StandardCharsets;
  9. import java.security.InvalidKeyException;
  10. import java.security.MessageDigest;
  11. import java.security.NoSuchAlgorithmException;
  12. import java.security.SecureRandom;
  13. import java.util.Base64;
  14. /**
  15. * TODO
  16. *
  17. * @author chenjianhua
  18. * @version 1.0
  19. * @date 2022/7/31 23:35
  20. */
  21. public class EncodeUtil {
  22. private EncodeUtil() {
  23. throw new Error("该类不能被实例化!");
  24. }
  25. private static Cipher makeCipher() throws Exception {
  26. return Cipher.getInstance("DES");
  27. }
  28. private static SecretKey makeKeyFactory(String sKey) {
  29. SecretKey secretKey = null;
  30. try {
  31. SecretKeyFactory des = SecretKeyFactory.getInstance("DES");
  32. secretKey = des.generateSecret(new DESKeySpec(sKey.getBytes()));
  33. return secretKey;
  34. } catch (Exception var3) {
  35. var3.printStackTrace();
  36. return secretKey;
  37. }
  38. }
  39. public static String encrypt(String key, String text) {
  40. try {
  41. Cipher cipher = makeCipher();
  42. SecretKey secretKey = makeKeyFactory(key);
  43. cipher.init(1, secretKey);
  44. return new String(Base64.getEncoder().encode(cipher.doFinal(text.getBytes())));
  45. } catch (Exception var4) {
  46. var4.printStackTrace();
  47. return text;
  48. }
  49. }
  50. public static String decrypt(String key, String text) {
  51. try {
  52. Cipher cipher = makeCipher();
  53. SecretKey secretKey = makeKeyFactory(key);
  54. cipher.init(2, secretKey);
  55. return new String(cipher.doFinal(Base64.getDecoder().decode(text.getBytes())));
  56. } catch (Exception var4) {
  57. var4.printStackTrace();
  58. return text;
  59. }
  60. }
  61. public static final String md5(String s) {
  62. char[] hexDigits = new char[]{'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
  63. try {
  64. byte[] strTemp = s.getBytes();
  65. MessageDigest mdTemp = MessageDigest.getInstance("MD5");
  66. mdTemp.update(strTemp);
  67. byte[] md = mdTemp.digest();
  68. int j = md.length;
  69. char[] str = new char[j * 2];
  70. int k = 0;
  71. for(int i = 0; i < j; ++i) {
  72. byte byte0 = md[i];
  73. str[k++] = hexDigits[byte0 >>> 4 & 15];
  74. str[k++] = hexDigits[byte0 & 15];
  75. }
  76. return new String(str);
  77. } catch (Exception var10) {
  78. return null;
  79. }
  80. }
  81. public static String encodeUTF8(String source) {
  82. String result = source;
  83. try {
  84. result = URLEncoder.encode(source, StandardCharsets.UTF_8.name());
  85. result = result.replace("+", "%20");
  86. } catch (UnsupportedEncodingException var3) {
  87. var3.printStackTrace();
  88. }
  89. return result;
  90. }
  91. public static String decodeUTF8(String source) {
  92. String result = source;
  93. try {
  94. result = URLDecoder.decode(source, StandardCharsets.UTF_8.name());
  95. } catch (UnsupportedEncodingException var3) {
  96. var3.printStackTrace();
  97. }
  98. return result;
  99. }
  100. public static String AESEncrypt(String content, String key) {
  101. try {
  102. KeyGenerator kgen = KeyGenerator.getInstance("AES");
  103. SecureRandom random = SecureRandom.getInstance("SHA1PRNG");
  104. random.setSeed(key.getBytes());
  105. kgen.init(128, random);
  106. SecretKey secretKey = kgen.generateKey();
  107. byte[] enCodeFormat = secretKey.getEncoded();
  108. SecretKeySpec secretKeySpec = new SecretKeySpec(enCodeFormat, "AES");
  109. Cipher cipher = Cipher.getInstance("AES");
  110. byte[] byteContent = content.getBytes("utf-8");
  111. cipher.init(1, secretKeySpec);
  112. byte[] byteRresult = cipher.doFinal(byteContent);
  113. StringBuffer sb = new StringBuffer();
  114. for(int i = 0; i < byteRresult.length; ++i) {
  115. String hex = Integer.toHexString(byteRresult[i] & 255);
  116. if (hex.length() == 1) {
  117. hex = '0' + hex;
  118. }
  119. sb.append(hex.toUpperCase());
  120. }
  121. return sb.toString();
  122. } catch (NoSuchAlgorithmException var13) {
  123. var13.printStackTrace();
  124. } catch (NoSuchPaddingException var14) {
  125. var14.printStackTrace();
  126. } catch (InvalidKeyException var15) {
  127. var15.printStackTrace();
  128. } catch (UnsupportedEncodingException var16) {
  129. var16.printStackTrace();
  130. } catch (IllegalBlockSizeException var17) {
  131. var17.printStackTrace();
  132. } catch (BadPaddingException var18) {
  133. var18.printStackTrace();
  134. }
  135. return null;
  136. }
  137. public static String AESDecrypt(String content, String key) {
  138. if (content.length() < 1) {
  139. return null;
  140. } else {
  141. byte[] byteRresult = new byte[content.length() / 2];
  142. for(int i = 0; i < content.length() / 2; ++i) {
  143. int high = Integer.parseInt(content.substring(i * 2, i * 2 + 1), 16);
  144. int low = Integer.parseInt(content.substring(i * 2 + 1, i * 2 + 2), 16);
  145. byteRresult[i] = (byte)(high * 16 + low);
  146. }
  147. try {
  148. KeyGenerator kgen = KeyGenerator.getInstance("AES");
  149. SecureRandom random = SecureRandom.getInstance("SHA1PRNG");
  150. random.setSeed(key.getBytes());
  151. kgen.init(128, random);
  152. SecretKey secretKey = kgen.generateKey();
  153. byte[] enCodeFormat = secretKey.getEncoded();
  154. SecretKeySpec secretKeySpec = new SecretKeySpec(enCodeFormat, "AES");
  155. Cipher cipher = Cipher.getInstance("AES");
  156. cipher.init(2, secretKeySpec);
  157. byte[] result = cipher.doFinal(byteRresult);
  158. return new String(result);
  159. } catch (NoSuchAlgorithmException var10) {
  160. var10.printStackTrace();
  161. } catch (NoSuchPaddingException var11) {
  162. var11.printStackTrace();
  163. } catch (InvalidKeyException var12) {
  164. var12.printStackTrace();
  165. } catch (IllegalBlockSizeException var13) {
  166. var13.printStackTrace();
  167. } catch (BadPaddingException var14) {
  168. var14.printStackTrace();
  169. }
  170. return null;
  171. }
  172. }
  173. }