MD5加密 解密

  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 }

 

posted @ 2018-12-06 18:28  `初一`  阅读(479)  评论(0)    收藏  举报