java 3des 解密_Java 3DES加密解密

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

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

//算法代码

[java] view plain copy

/**

* 转换成十六进制字符串

* @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;

}

//调用

[java] view plain copy

String key = "xUHdKxzVCbsgVIwTnc1jtpWn";

String idcard = "130682199606071234";

String encode = PasswordUtil.encode3Des(key, idcard);

log.info("原串:" + idcard);

log.info("加密后的串:" + encode);

log.info("解密后的串:" + PasswordUtil.decode3Des(key, encode));

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值