当前位置: 移动技术网 > IT编程>开发语言>Java > Java实现的DES加密解密工具类实例

Java实现的DES加密解密工具类实例

2019年07月19日  | 移动技术网IT编程  | 我要评论

商界网,中央政治内幕,毛露露图片

本文实例讲述了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在线加密工具:

在线散列/哈希算法加密工具:

在线md5/hash/sha-1/sha-2/sha-256/sha-512/sha-3/ripemd-160加密工具:

更多关于java相关内容感兴趣的读者可查看本站专题:《java数学运算技巧总结》、《java数据结构与算法教程》、《java字符与字符串操作技巧总结》、《java操作dom节点技巧总结》和《java缓存操作技巧汇总

希望本文所述对大家java程序设计有所帮助。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网