|
|
@@ -0,0 +1,78 @@
|
|
|
+package com.uas.credit.support;
|
|
|
+
|
|
|
+import javax.crypto.Cipher;
|
|
|
+import javax.crypto.SecretKey;
|
|
|
+import javax.crypto.SecretKeyFactory;
|
|
|
+import javax.crypto.spec.DESKeySpec;
|
|
|
+import javax.crypto.spec.IvParameterSpec;
|
|
|
+
|
|
|
+/**
|
|
|
+ * 鹏远征信 用户名、密码加密工具类
|
|
|
+ * @author liuam
|
|
|
+ * @since 2018/6/25 0025 下午 17:12
|
|
|
+ */
|
|
|
+public class Des {
|
|
|
+
|
|
|
+ private byte[] desKey;
|
|
|
+
|
|
|
+ public Des() {
|
|
|
+ }
|
|
|
+
|
|
|
+ public String decrypt(String message, String key) throws Exception {
|
|
|
+ byte[] bytesrc = this.convertHexString(message);
|
|
|
+ Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
|
|
|
+ DESKeySpec desKeySpec = new DESKeySpec(key.getBytes("UTF-8"));
|
|
|
+ SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
|
|
|
+ SecretKey secretKey = keyFactory.generateSecret(desKeySpec);
|
|
|
+ IvParameterSpec iv = new IvParameterSpec(key.getBytes("UTF-8"));
|
|
|
+ cipher.init(2, secretKey, iv);
|
|
|
+ byte[] retByte = cipher.doFinal(bytesrc);
|
|
|
+ return new String(retByte);
|
|
|
+ }
|
|
|
+
|
|
|
+ public byte[] encrypt(String message, String key) throws Exception {
|
|
|
+ Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
|
|
|
+ DESKeySpec desKeySpec = new DESKeySpec(key.getBytes("UTF-8"));
|
|
|
+ SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
|
|
|
+ SecretKey secretKey = keyFactory.generateSecret(desKeySpec);
|
|
|
+ IvParameterSpec iv = new IvParameterSpec(key.getBytes("UTF-8"));
|
|
|
+ cipher.init(1, secretKey, iv);
|
|
|
+ return cipher.doFinal(message.getBytes("UTF-8"));
|
|
|
+ }
|
|
|
+
|
|
|
+ public byte[] convertHexString(String ss) {
|
|
|
+ byte[] digest = new byte[ss.length() / 2];
|
|
|
+
|
|
|
+ for(int i = 0; i < digest.length; ++i) {
|
|
|
+ String byteString = ss.substring(2 * i, 2 * i + 2);
|
|
|
+ int byteValue = Integer.parseInt(byteString, 16);
|
|
|
+ digest[i] = (byte)byteValue;
|
|
|
+ }
|
|
|
+
|
|
|
+ return digest;
|
|
|
+ }
|
|
|
+
|
|
|
+ public String toHexString(byte[] b) {
|
|
|
+ StringBuffer hexString = new StringBuffer();
|
|
|
+
|
|
|
+ for(int i = 0; i < b.length; ++i) {
|
|
|
+ String plainText = Integer.toHexString(255 & b[i]);
|
|
|
+ if(plainText.length() < 2) {
|
|
|
+ plainText = "0" + plainText;
|
|
|
+ }
|
|
|
+
|
|
|
+ hexString.append(plainText);
|
|
|
+ }
|
|
|
+
|
|
|
+ return hexString.toString();
|
|
|
+ }
|
|
|
+
|
|
|
+ public byte[] getDesKey() {
|
|
|
+ return this.desKey;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setDesKey(byte[] desKey) {
|
|
|
+ this.desKey = desKey;
|
|
|
+ }
|
|
|
+
|
|
|
+}
|