Java实现的DES加密解密工具类实例
程序员文章站
2024-03-31 17:11:22
本文实例讲述了java实现的des加密解密工具类。分享给大家供大家参考,具体如下:
一个工具类,很常用,不做深入研究了,那来可直接用
desutil.java...
本文实例讲述了java实现的des加密解密工具类。分享给大家供大家参考,具体如下:
一个工具类,很常用,不做深入研究了,那来可直接用
desutil.java
package lsy; import java.security.key; import java.security.securerandom; import javax.crypto.cipher; import javax.crypto.keygenerator; import javax.crypto.secretkey; import sun.misc.base64decoder; import sun.misc.base64encoder; public class desutil { /** * @param args */ public static void main(string[] args) { //以下是加密方法algorithm="aes"的测试 system.out.println(desutil.getinstance("lushuaiyin").getencodestring("hello")); //输出 ldewgazkmwheyfjbz56ylw== //将上面的密文解密: system.out.println(desutil.getinstance("lushuaiyin").getdecodestring("ldewgazkmwheyfjbz56ylw==")); //输出 hello //改变密钥测试 system.out.println(desutil.getinstance("suolong").getencodestring("hello")); //输出 /rlowoj+fr3kdmcdjenatg== system.out.println(desutil.getinstance("suolong").getdecodestring("/rlowoj+fr3kdmcdjenatg==")); //输出 hello //如果使用不正确的密钥解密,将会: system.out.println(desutil.getinstance("suolong").getdecodestring("ldewgazkmwheyfjbz56ylw==")); } private secretkey key=null;//密钥 //定义 加密算法,可用 des,desede,blowfish,aes //不同的加密方式结果会不同 private static string algorithm="aes"; private static desutil desutil=null; public desutil(){} public static desutil getinstance(string strkey){ desutil=new desutil(); desutil.createkey(strkey); return desutil; } /** * algorithm 算法 * @param strkey */ public void createkey(string strkey){ try{ keygenerator kg=keygenerator.getinstance(desutil.algorithm); byte[] bt=strkey.getbytes("utf-8"); securerandom sr=new securerandom(bt); kg.init(sr); this.setkey(kg.generatekey()); }catch(exception e){ } } /** * 加密方法,返回密文 * cipher 密码 * @param datastr */ public string getencodestring(string datastr){ byte[] miwen=null;//密文 byte[] mingwen=null;//明文 cipher cipher; string result="";//密文字符串 try{ mingwen=datastr.getbytes("utf-8"); cipher=cipher.getinstance(desutil.algorithm); cipher.init(cipher.encrypt_mode, this.getkey()); miwen=cipher.dofinal(mingwen); base64encoder base64en = new base64encoder(); result=base64en.encodebuffer(miwen);//或者可以用下面的方法得到密文,结果是不一样的,都可以正常解密 // result=byte2hex(miwen);//密文结果类似2c:37:b0:18:06:64:99:61:de:60:58:c1:cf:9e:b2:97 }catch(exception e){ e.printstacktrace(); } return result; } /** * 解密方法,返回明文 * @param codestr * @return */ public string getdecodestring(string codestr){ base64decoder base64de = new base64decoder(); byte[] miwen=null; byte[] mingwen=null; string resultdata="";//返回的明文 cipher cipher; try{ miwen=base64de.decodebuffer(codestr); cipher=cipher.getinstance(desutil.algorithm); cipher.init(cipher.decrypt_mode, this.getkey()); mingwen=cipher.dofinal(miwen); resultdata = new string(mingwen,"utf-8"); }catch(exception e){ return "密钥不正确或其他原因导致异常,无法解密!"; } return resultdata; } //二行制转字符串 public 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 secretkey getkey() { return key; } public void setkey(secretkey key) { this.key = key; } public static string getalgorithm() { return algorithm; } public static void setalgorithm(string algorithm) { algorithm = algorithm; } }
运行结果:
ldewgazkmwheyfjbz56ylw== hello /rlowoj+fr3kdmcdjenatg== hello 密钥不正确或其他原因导致异常,无法解密!
ps:关于加密解密感兴趣的朋友还可以参考本站在线工具:
在线des加密/解密工具:
文字在线加密解密工具(包含aes、des、rc4等):
md5在线加密工具:
http://tools.jb51.net/password/createmd5password
在线散列/哈希算法加密工具:
在线md5/hash/sha-1/sha-2/sha-256/sha-512/sha-3/ripemd-160加密工具:
更多关于java相关内容感兴趣的读者可查看本站专题:《java数学运算技巧总结》、《java数据结构与算法教程》、《java字符与字符串操作技巧总结》、《java操作dom节点技巧总结》和《java缓存操作技巧汇总》
希望本文所述对大家java程序设计有所帮助。