依赖包

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));

输出

Java 3DES加密解密(Commons.Codec Base64)相关推荐

  1. node和java 3des加密解密

    node npm i crypto import * as crypto from 'crypto' /*** rsa 256签名* @param data*/ export function cre ...

  2. java 3des加密_Java使用3DES加密解密的流程 - 3des加密解密详细解释

    Java使用3DES加密解密的流程 ①传入共同约定的密钥(keyBytes)以及算法(Algorithm),来构建SecretKey密钥对象 SecretKey deskey = new Secret ...

  3. java之php、Android、JAVA、C# 3DES加密解密

    异常如下 1.javax.crypto.BadPaddingException: Given final block not properly padded 1)要确认下是否加密和解密都是使用相同的填 ...

  4. Java实现3DES加密解密(DESede/ECB/PKCS5Padding使用)

    一.简介 3DES(又叫Triple DES)是三重数据加密算法(TDEA,Triple Data Encryption Algorithm)块密码的通称. 它相当于是对每个数据块应用三次DES加密算 ...

  5. 用java实现3DES加密解密算法

    3DES加密也称三重加密,其底层加密算法与DES相同,只不过它的密钥长度是168位.由于在DES加密算法中,64位密钥中每一个字节的第8位是奇偶校验位,所以每个字节中只有后7位起密钥作用,实际是56位 ...

  6. Java中3DES加密解密示例

    在java中调用sun公司提供的3DES加密解密算法时,需要使用到$JAVA_HOME/jre/lib/目录下如下的4个jar包: jce.jar security/US_export_policy. ...

  7. java 3des_如何用Java进行3DES加密解密 java实现3des加密解密教程

    3des,全称为3DESede或TripleDES,中文解释为是三重数据加密,用户可以通过通过对DES算法进行改进,针对每个数据块进行三次DES加密,下面小编为你带来java实现3des加密解密教程! ...

  8. 使用Java实现3DES加密解密

    1. 介绍 3DES又称Triple DES,是三重数据加密算法(TDEA,Triple Data Encryption Algorithm)块密码的通称.它相当于是对每个数据块应用三次DES加密算法 ...

  9. Java AES 加密解密工具类

    maven 引入一个依赖 <!-- https://mvnrepository.com/artifact/commons-codec/commons-codec --> <depen ...

最新文章

  1. 基本数据结构(图: 基本结构,DFS,prim算法, kruskal算法)
  2. 使用您自己的规则在Eclipse中自定义PMD
  3. 触发器-MSSQL常用操作
  4. AI应用开发实战系列之二:从零开始搭建macOS开发环境
  5. linux ps pstree pstack命令
  6. eclipse 取消自动括号补全
  7. 读书随笔:The Book of Why——CHAPTER 2:From Buccaneers to Guinea Pigs: The Genesis of Causal Inference
  8. 网站如何优化才是成功的
  9. 比Python、Java更快的 Go 语言,能否称霸?
  10. paip.为什么软件体积越来越大
  11. MySQL 入门(三)—— MySQL数据类型
  12. VBScript经典教程以及函数手册
  13. 华为USG防火墙恢复密码步骤
  14. ​电子投票系统与区块链
  15. python面向对象的编程_python面向对象的编程
  16. 计算机考证证件照没有露耳朵
  17. 老男孩每日一题(一)
  18. 手机卡服务器密码忘记了怎么修改密码,wifi密码忘记了怎么办找回密码 手机怎么修改自家wifi密码...
  19. tensorflow与python交互系列,tf.py_function()、tf.py_func、tf.numpy_function()(一)
  20. 0投资创业做什么比较好零投资创业项目

热门文章

  1. (插件)程序员摸鱼神器,上班也可以在VSCode看股票 基金实时数据
  2. 重新认识康德的“头上星空”
  3. Linux iptables nat 实现不同网络间(内外网)的互联
  4. 【阿朱标红】O2O五年三次创业的九大经验(天天用车CEO翟光龙)
  5. SOCKET【3】-select+getsockopt客户端检测connect是否成功
  6. Centos7 配置网卡链路聚合(转载)
  7. 寒湿重的表现 ,舌苔发白
  8. MATLAB 太阳系九大行星运行(天文物理)天体仿真(一)
  9. 《Linux指令从入门到精通》——4.3 Linux下全屏幕文本编辑器的命令行方式
  10. 如何使用QQ号来注册腾讯云新用户账号并完成实名认证?