1 package com.hnf.framework.orders.utils;
2
3 import sun.misc.BASE64Decoder;
4 import sun.misc.BASE64Encoder;
5
6 import javax.crypto.Cipher;
7 import javax.crypto.SecretKeyFactory;
8 import javax.crypto.spec.DESedeKeySpec;
9 import java.io.UnsupportedEncodingException;
10 import java.security.Key;
11 import java.security.MessageDigest;
12 import java.security.NoSuchAlgorithmException;
13 import java.security.SecureRandom;
14
15
16 /**
17 * des加密解密
18 *
19 * @author
20 *
21 */
22 public class DesEncrypt {
23 String sl = "j+K2WUDWUoZ9pX+gEKqrsg==";//用MD5生成
24 Key key;
25
26 public DesEncrypt(String str) {
27 setKey(str);// 生成密匙
28 }
29
30 /**利用MD5进行加密
31 * @param str 待加密的字符串
32 * @return 加密后的字符串
33 * @throws NoSuchAlgorithmException 没有这种产生消息摘要的算法
34 * @throws UnsupportedEncodingException
35 */
36 public static String EncoderByMd5(String str) throws NoSuchAlgorithmException, UnsupportedEncodingException{
37 //确定计算方法
38 MessageDigest md5=MessageDigest.getInstance("MD5");
39 BASE64Encoder base64en = new BASE64Encoder();
40 //加密后的字符串
41 String newstr=base64en.encode(md5.digest(str.getBytes("utf-8")));
42 return newstr;
43 }
44
45 public DesEncrypt() {
46 setKey(sl);
47 }
48
49 /**
50 * 根据参数生成KEY
51 */
52 public void setKey(String strKey) {
53 try {
54 //对比DES
55 SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DESede");
56 this.key = keyFactory.generateSecret(new DESedeKeySpec(strKey.getBytes("UTF8")));
57 } catch (Exception e) {
58 throw new RuntimeException(
59 "Error initializing SqlMap class. Cause: " + e);
60 }
61 }
62
63
64 /**
65 * 加密String明文输入,String密文输出
66 */
67 public String encrypt(String strMing) {
68 byte[] byteMi = null;
69 byte[] byteMing = null;
70 String strMi = "";
71 BASE64Encoder base64en = new BASE64Encoder();
72 try {
73 byteMing = strMing.getBytes("UTF8");
74 byteMi = this.getEncCode(byteMing);
75 strMi = base64en.encode(byteMi);
76 } catch (Exception e) {
77 throw new RuntimeException(
78 "Error initializing SqlMap class. Cause: " + e);
79 } finally {
80 base64en = null;
81 byteMing = null;
82 byteMi = null;
83 }
84 return strMi;
85 }
86
87 /**
88 * 解密 以String密文输入,String明文输出
89 *
90 * @param strMi
91 * @return
92 */
93 public String decrypt(String strMi) {
94 BASE64Decoder base64De = new BASE64Decoder();
95 byte[] byteMing = null;
96 byte[] byteMi = null;
97 String strMing = "";
98 try {
99 byteMi = base64De.decodeBuffer(strMi);
100 byteMing = this.getDesCode(byteMi);
101 strMing = new String(byteMing, "UTF8");
102 } catch (Exception e) {
103 throw new RuntimeException(
104 "Error initializing SqlMap class. Cause: " + e);
105 } finally {
106 base64De = null;
107 byteMing = null;
108 byteMi = null;
109 }
110 return strMing;
111 }
112
113 /**
114 * 加密以byte[]明文输入,byte[]密文输出
115 *
116 * @param byteS
117 * @return
118 */
119 private byte[] getEncCode(byte[] byteS) {
120 byte[] byteFina = null;
121 Cipher cipher;
122 try {//对比DES
123 cipher = Cipher.getInstance("DESede");
124 cipher.init(Cipher.ENCRYPT_MODE, key,SecureRandom.getInstance("SHA1PRNG"));
125 byteFina = cipher.doFinal(byteS);
126 } catch (Exception e) {
127 throw new RuntimeException(
128 "Error initializing SqlMap class. Cause: " + e);
129 } finally {
130 cipher = null;
131 }
132 return byteFina;
133 }
134
135 /**
136 * 解密以byte[]密文输入,以byte[]明文输出
137 *
138 * @param byteD
139 * @return
140 */
141 private byte[] getDesCode(byte[] byteD) {
142 Cipher cipher;
143 byte[] byteFina = null;
144 try {//对比DES
145 cipher = Cipher.getInstance("DESede");
146 cipher.init(Cipher.DECRYPT_MODE, key,SecureRandom.getInstance("SHA1PRNG"));
147 byteFina = cipher.doFinal(byteD);
148 } catch (Exception e) {
149 throw new RuntimeException(
150 "Error initializing SqlMap class. Cause: " + e);
151 } finally {
152 cipher = null;
153 }
154 return byteFina;
155 }
156
157
158
159 public static void main(String args[]) throws NoSuchAlgorithmException, UnsupportedEncodingException {
160 DesEncrypt des = new DesEncrypt();
161
162 // String str1 = "[{\"instDate\":\"20170801\",\"sysSeqNum\":\"123456789\",\"termSsn\":\"123456654\",\"pan\":\"201010102121212121\",\"amtTrans\":\"20017.11\",\"retrivlRef\":\"1235\",\"cardAccpTermId\":\"abcd12345\",\"cardAccpId\":\"1234554321\",\"cardAccpName\":\"商户名称\",\"sysClrDate\":\"21070909\",\"respCode\":\"1\",\"switchData\":\"ok\",\"transCode\":\"支付方式\",\"txnNum\":\"交易类型\",\"orderNo\":\"123456\",\"cupSwresved\":\"订单号\",\"cupSwresved1\":\"微信支付宝交易号\"}]";
163 String str1="121212" ;
164 String str2 = des.encrypt(str1);
165 DesEncrypt des1 = new DesEncrypt();
166 System.out.println("密文:" + str2);
167
168 String ii = "0Yddpv0j1IITqxBWGZnQe07heUWrn4hRnvpq5cXok7BOd48RfShBcXacGfzeSHrkxlH2fNocL19q" +
169 "WBE04l6D8OMgQ5RbgNe+3GNBYjA6JbheJyeFxdEwtroScsSbKOKYalObEyH1Wb+a7YcVf6EZsPcW" +
170 "YCev3/R/Uo0Ygbqfjc5TPPVBlcHfV1MEqPrT1bhkYXALOIsQjthNppO+n4HzCsDaQQRj2KVuci8O" +
171 "tAzNJ+AbIL3y9mKlAtngBXG/kg2SAf1tLBQ4p9lQk1zYuAZzbJCbpTKVeW3mGaxWQBSSHV/oACMW" +
172 "dDidSAc9Tbmew5Ed5kSYAWWL91L5C9thTRcieZ61ukYuFeMecPqbLk81HAo4UWImL54zXma4KvG4" +
173 "0bYWk1IXTESDeKs3k0rs+7dCYDn0LZemPdY2syoFFLiRQ4U3df5CrxuKXmeNfURpcezfShLjy2Iv" +
174 "rm735Dt54f2AT810jpFJrXH4BrP+sUaMS/Ego1DtfmYz3ayTOsdPhBaBpERhZF9kcmtS1vEDf2qL" +
175 "miXxn4mZZke3JPy6oYSREO7VURhqc1fa+bmtYU8f4+dw5LgAmwAGI6OIJ5OeeheTZLtEjh/aQcSL" +
176 "owz+8A4DanMFSB4sB28sGqUx3R9nsfdKOnju2Kmni+N9mPnQs9yYdbAeiHV6uLgswNpBBGPYpW6B" +
177 "UqZ8PNIFqiOTcsd1scVpP3b55fMxMR7vLzhyi69jtizaOR3iyTA0tK6JXi2K2abAKsM3tC3VeTBu" +
178 "3kJV73hWe87s+e03TzJnXRThxc37zDi8SboODWdKF1D7omh1H5+o6ZICIftuohfrV3ttVQBPvRiH" +
179 "Wn6W82k94/ULnbCCvJRCyy+GZS6pYuZiUu/rzen8Hmsih3AY2Uz8TsYpS362F2K87mBH7FNT6Bjx" +
180 "xj+HHUNmc2s83eDmBU4Fz6vTwr1PazjLnDAtNXTZqedhk3DMozUgA5rz7KwJ3wj3DyYGAzJe9i56" +
181 "0QYwjIxRVrrUq2E1NY2guYZhbkj/yu5ZF7c9kAwzXAM5k6rKSoOsjoNBiyyTLZWxXGKFtHEG2hnW" +
182 "38I=";
183 // DES解密
184 String deStr =
185 des1.decrypt(ii);
186 System.out.println("明文:" + deStr);
187 //System.out.println(EncoderByMd5("instDatesysSeqNumtermSsnpanamtTransretrivlRefcardAccpTermIdcardAccpIdcardAccpNamesysClrDaterespCodeswitchDatatransCodetxnNumorderNocupSwresvedcupSwresved1Mym"));
188
189 }
190
191 }