java 3des 解密_Java 3DES加密解密(Commons.Codec Base64)

本文介绍了一种基于3DES算法的加密与解密方法,包括十六进制字符串转换、3DES加密及3DES解密的具体实现过程。通过示例展示了如何使用该方法对特定字符串进行加密与解密。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

依赖包import org.apache.commons.codec.digest.DigestUtils; import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.spec.SecretKeySpec; 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 = DemoApplication.encode3Des(key, idcard); System.out.println("原串:" + idcard); System.out.println("加密后的串:" + encode); System.out.println("解密后的串:" + DemoApplication.decode3Des(key, encode));

输出

1529498539882275.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值