/*字符串 DESede(3DES) 加密*/ import java.io.IOException; import java.security.Security; import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.spec.SecretKeySpec; import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; public class DES3 { private static final String Algorithm = "DESede"; // 定义 加密算法,可用 // DES,DESede,Blowfish // keybyte为加密密钥,长度为24字节 // src为被加密的数据缓冲区(源) public static byte[] encryptMode(byte[] keybyte, byte[] src) { try { // 生成密钥 SecretKey deskey = new SecretKeySpec(keybyte, Algorithm); // 加密 Cipher c1 = Cipher.getInstance(Algorithm); c1.init(Cipher.ENCRYPT_MODE, deskey); return c1.doFinal(src); } catch (java.security.NoSuchAlgorithmException e1) { e1.printStackTrace(); } catch (javax.crypto.NoSuchPaddingException e2) { e2.printStackTrace(); } catch (java.lang.Exception e3) { e3.printStackTrace(); } return null; } // keybyte为加密密钥,长度为24字节 每8个是一组 // src为加密后的缓冲区 public static byte[] decryptMode(byte[] keybyte, byte[] src) { try { // 生成密钥 SecretKey deskey = new SecretKeySpec(keybyte, Algorithm); // 解密 Cipher c1 = Cipher.getInstance(Algorithm); c1.init(Cipher.DECRYPT_MODE, deskey); return c1.doFinal(src); } catch (java.security.NoSuchAlgorithmException e1) { e1.printStackTrace(); } catch (javax.crypto.NoSuchPaddingException e2) { e2.printStackTrace(); } catch (java.lang.Exception e3) { e3.printStackTrace(); } return null; } // 转换成十六进制字符串 public static String byte2hex(byte[] b) { String hs = ""; String stmp = ""; for (int n = 0; n < b.length; n++) { stmp = (java.lang.Integer.toHexString(b[n] & 0XFF)); if (stmp.length() == 1) { hs = hs + "0" + stmp; } else { hs = hs + stmp; } if (n < b.length - 1) { hs = hs + ":"; } } return hs.toUpperCase(); } public static void main(String[] args) throws IOException { final byte[] keyBytes = "ceshi123456rewqdsf434368".getBytes(); // 24字节的密钥 String szSrc = "abcd_123"; System.out.println("加密前的字符串:" + szSrc); byte[] encoded = encryptMode(keyBytes, szSrc.getBytes()); String encode = new BASE64Encoder().encode(encoded); System.out.println("加密后的字符串:" + new String(encode)); byte[] decodeBuffer = new BASE64Decoder().decodeBuffer("3YV86nsmJEVYa6dW8mIEYA=="); byte[] srcBytes = decryptMode(keyBytes, decodeBuffer); System.out.println("解密后的字符串:" + (new String(srcBytes))); } }
相关推荐
对数据进行3DES加密或者解密,如果密码长度为8字节则为DES加密或者解密
3DES加密解密的全工具类,快速帮助新人进行3Des加密解密
3DES加密解密java版+js版
AES DES RC2 RC4 3DES加密解密工具,支持多种加密解密算法,打CTF比赛再也不用去网页搜索了!
sun java 3DES加密解密算法
3DES加密解密相关js文件,此文件只有JS文件,是我博客《三重Des对称加密在JS、Android、Ios 和Java 平台的实现(多加一个JS实现)》中的文件。https://blog.csdn.net/yufang131/article/details/79869964
对数据进行单DES或者3DES加密或者解密,如果密码长度为8字节则为DES加密或者解密
NULL 博文链接:https://tiancheng.iteye.com/blog/1821235
3des加,解密算法简单java示例,代码无太多注释,忘各位自学
des 3des 加密解密 c语言
C#编写的DES、AES、3DES、IDEA加密解密算法实现,内有完整源代码
3des 加密算法,支持linux 和 windwos 同时支持
3DES加密解密的实现. 详解了3DES加密及解密的过程原理及应用
des加密解密工具
支持3DES加密 解密 类中利用函数重载的方式 实现两种加密方式 加密后为16进制字符串 使用方法: 实例化一个对象 然后就可以随便用了。 如 DES加密 解密 CString sd,sd2; yxyDES2 des; sd=des.DESr("wan123456",...
3DES 加密解密程序3DES 加密解密程序 3DES 加密解密程序
C#3DES加密解密Encrypt3DES(string strString, string strKey, Encoding encoding)......