|
@@ -0,0 +1,73 @@
|
|
|
+package com.diagbot.util;
|
|
|
+
|
|
|
+import org.apache.commons.codec.binary.Base64;
|
|
|
+
|
|
|
+import javax.crypto.*;
|
|
|
+import javax.crypto.spec.DESKeySpec;
|
|
|
+import java.io.UnsupportedEncodingException;
|
|
|
+import java.security.InvalidKeyException;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @ClassName org.diagbot.pub.utils.security.EncrypDES
|
|
|
+ * @Description TODO
|
|
|
+ * @Author fyeman
|
|
|
+ * @Date 2019/2/22/022 14:44
|
|
|
+ * @Version 1.0
|
|
|
+ **/
|
|
|
+public class EncrypDES {
|
|
|
+ //随机加密串
|
|
|
+ private String key = "AUYEJHHH2019";
|
|
|
+ // SecretKey 负责保存对称密钥
|
|
|
+ private SecretKey deskey;
|
|
|
+ // Cipher负责完成加密或解密工作
|
|
|
+ private Cipher c;
|
|
|
+ // 该字节数组负责保存加密的结果
|
|
|
+ private byte[] cipherByte;
|
|
|
+
|
|
|
+ public EncrypDES() throws Exception {
|
|
|
+ DESKeySpec desKey = new DESKeySpec(key.getBytes("utf-8"));
|
|
|
+ SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
|
|
|
+ // 生成密钥
|
|
|
+ deskey = keyFactory.generateSecret(desKey);
|
|
|
+ // 生成Cipher对象,指定其支持的DES算法
|
|
|
+ c = Cipher.getInstance("DES");
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 对字符串加密
|
|
|
+ *
|
|
|
+ * @param str
|
|
|
+ * @return
|
|
|
+ * @throws InvalidKeyException
|
|
|
+ * @throws IllegalBlockSizeException
|
|
|
+ * @throws BadPaddingException
|
|
|
+ */
|
|
|
+ public String encrytor(String str) throws InvalidKeyException,
|
|
|
+ IllegalBlockSizeException, BadPaddingException, UnsupportedEncodingException {
|
|
|
+ // 根据密钥,对Cipher对象进行初始化,ENCRYPT_MODE表示加密模式
|
|
|
+ c.init(Cipher.ENCRYPT_MODE, deskey);
|
|
|
+ byte[] src = str.getBytes("utf-8");
|
|
|
+ // 加密,结果保存进cipherByte
|
|
|
+ cipherByte = c.doFinal(src);
|
|
|
+ return Base64.encodeBase64String(cipherByte);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 对字符串解密
|
|
|
+ *
|
|
|
+ * @param str
|
|
|
+ * @return
|
|
|
+ * @throws InvalidKeyException
|
|
|
+ * @throws IllegalBlockSizeException
|
|
|
+ * @throws BadPaddingException
|
|
|
+ */
|
|
|
+ public String decryptor(String str) throws InvalidKeyException,
|
|
|
+ IllegalBlockSizeException, BadPaddingException, UnsupportedEncodingException {
|
|
|
+ byte[] buff = Base64.decodeBase64(str);
|
|
|
+ // 根据密钥,对Cipher对象进行初始化,DECRYPT_MODE表示加密模式
|
|
|
+ c.init(Cipher.DECRYPT_MODE, deskey);
|
|
|
+ cipherByte = c.doFinal(buff);
|
|
|
+ return new String(cipherByte, "utf-8");
|
|
|
+ }
|
|
|
+}
|
|
|
+
|