博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java 3DES加密解密(Commons.Codec Base64)
阅读量:4120 次
发布时间:2019-05-25

本文共 2725 字,大约阅读时间需要 9 分钟。

依赖包

import org.apache.commons.codec.digest.DigestUtils;import org.apache.commons.codec.binary.Base64;

算法代码

/**     * 转换成十六进制字符串     * @param username     * @return     *     * lee on 2017-08-09 10:54:19     */    public static byte[] hex(String key){          String f = DigestUtils.md5Hex(key);          byte[] bkeys = new String(f).getBytes();          byte[] enk = new byte[24];          for (int i=0;i<24;i++){              enk[i] = bkeys[i];          }          return enk;      }        /**     * 3DES加密     * @param key 密钥,24位     * @param srcStr 将加密的字符串     * @return     *     * lee on 2017-08-09 10:51:44     */    public static String  encode3Des(String key,String srcStr){      	byte[] keybyte = hex(key);    	byte[] src = srcStr.getBytes();        try {             //生成密钥             SecretKey deskey = new SecretKeySpec(keybyte, "DESede");           //加密             Cipher c1 = Cipher.getInstance("DESede");           c1.init(Cipher.ENCRYPT_MODE, deskey);                        String pwd = Base64.encodeBase64String(c1.doFinal(src));//           return c1.doFinal(src);//在单一方面的加密或解密             return pwd;       } catch (java.security.NoSuchAlgorithmException e1) {             // TODO: handle exception              e1.printStackTrace();         }catch(javax.crypto.NoSuchPaddingException e2){             e2.printStackTrace();         }catch(java.lang.Exception e3){             e3.printStackTrace();         }         return null;     }       /**    * 3DES解密    * @param key 加密密钥,长度为24字节      * @param desStr 解密后的字符串    * @return    *    * lee on 2017-08-09 10:52:54    */     public static String decode3Des(String key, String desStr){      	Base64 base64 = new Base64();    	byte[] keybyte = hex(key);    	byte[] src = base64.decode(desStr);    			        try {              //生成密钥              SecretKey deskey = new SecretKeySpec(keybyte, "DESede");              //解密              Cipher c1 = Cipher.getInstance("DESede");              c1.init(Cipher.DECRYPT_MODE, deskey);              String pwd = new String(c1.doFinal(src));//            return c1.doFinal(src);              return pwd;        } catch (java.security.NoSuchAlgorithmException e1) {              // TODO: handle exception              e1.printStackTrace();          }catch(javax.crypto.NoSuchPaddingException e2){              e2.printStackTrace();          }catch(java.lang.Exception e3){              e3.printStackTrace();          }          return null;              }
调用

String key = "xUHdKxzVCbsgVIwTnc1jtpWn";		String idcard = "130682199606071234";		String encode = PasswordUtil.encode3Des(key, idcard);		log.info("原串:" + idcard);		log.info("加密后的串:" + encode);		log.info("解密后的串:" + PasswordUtil.decode3Des(key, encode));

输出

你可能感兴趣的文章
Spring MVC中使用Thymeleaf模板引擎
查看>>
PHP 7 的五大新特性
查看>>
深入了解php底层机制
查看>>
PHP中的stdClass 【转】
查看>>
XHProf-php轻量级的性能分析工具
查看>>
OpenCV gpu模块样例注释:video_reader.cpp
查看>>
OpenCV meanshift目标跟踪总结
查看>>
就在昨天,全球 42 亿 IPv4 地址宣告耗尽!
查看>>
听说玩这些游戏能提升编程能力?
查看>>
如果你还不了解 RTC,那我强烈建议你看看这个!
查看>>
沙雕程序员在无聊的时候,都搞出了哪些好玩的小玩意...
查看>>
Mysql复制表以及复制数据库
查看>>
Linux下SVN客户端使用教程
查看>>
Linux分区方案
查看>>
nc 命令详解
查看>>
如何使用 systemd 中的定时器
查看>>
git命令速查表
查看>>
linux进程监控和自动重启的简单实现
查看>>
OpenFeign学习(三):OpenFeign配置生成代理对象
查看>>
OpenFeign学习(四):OpenFeign的方法同步请求执行
查看>>