java des 加密工具的使用,Java中DES加密解密工具类的实现实例
这篇文章主要介绍了Java实现的DES加密解密工具类,结合具体实例形式分析了Java实现的DES加密解密工具类定义与使用方法,需要的朋友可以参考下
本文实例讲述了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
密钥不正确或其他原因导致异常,无法解密!
java des 加密工具的使用,Java中DES加密解密工具类的实现实例相关推荐
- linux下efs加密技术,在Linux系统中的加密文件系统应用(EFS)
在Linux系统中的加密文件系统应用(EFS) 开源系统在企业中尤其是在服务器的构建和数据存储中得到了普遍的应用和推广,其安全问题得到了大家的关注.基于这些考虑,开源系统在数据安全方面提供了许多优秀和 ...
- php 加密保存mysql_PHP及MYSQL中字符串加密函数
[IT168 服务器学院]我们在写PHP程序时经常要对用户的口令加密以确保安全,这时就要用到一些加密的函数.我总结了以下几种方法写出来供大家参考. 1.用MYSQL中的加密函数来加密:PASSWORD ...
- python判断网页密码加密方式_Python模拟网页中javascript加密与验证的相关处理
在做网络爬虫的过程中你是否一些在这方面做的很好的网站,你向知道他是通过哪些相关的操作做出这么好的网站,以下就是文章的相关内容的具体介绍,希望你浏览完下面的内容会有所收获.Python模拟网页的java ...
- aws rds 加密_AWS RDS SQL Server中的加密备份和还原
aws rds 加密 ol li p{ font-size: 14px; color: #252525; } ol li p{ font-size: 14px; color: #252525; } I ...
- java锁对象的区别吗_Java中对象级别锁和类级别锁之间的区别
在多线程环境中,两个或多个线程可以同时访问共享资源,这可能导致系统行为不一致.Java使用锁的概念来限制对共享资源或对象的并发访问.锁可以应用于两个级别-对象级锁-当您希望非静态方法或非静态代码块仅应 ...
- pc工具不支持stb的加密方式_那些工作中常用的实用工具
DESIGN 古人云:工欲善其事,必先利其器.俗话说:巧妇难为无米之炊.两句话都讲的是,做专业的事,要有专业的工具,保证品质的同时呢,又能提高生产效率.作为一名设计师,同样需要专业的工具输出我们的产品 ...
- java如何枚举定义一个数组_Java中如何将字符枚举类变成一个数组
( light. class ); currenummap.put(light. red , " 红灯 " ); currenummap.put(light. green , &q ...
- android ddms工具,请问Android Studio中怎么使用DDMS工具
随着 android studio 的广泛使用,开发人员对相关工具的使用需求更加凸显.昨天在一个android studio教程网站上,看到一篇有关DDMS工具使用的相关知识,感觉很不错,分享给大家, ...
- linux硬盘分区工具,Linux安装过程中的硬盘分区工具是()
先化简,再求值:x2-2xx-1?(1-1x),其中x=6. 先化简,再求值:2x-1-1x2-1?x2+2x+1x-1,其中x=3+1. 求代数式的值:x2-2xx2-4+(x-2-2x-4x+2) ...
- 一个Java讲师在培训过程中用到的工具【随时更新中】
一个Java讲师在培训过程中用到的工具[随时更新中] 引子 选择工具的思路 我选择的工具(会不断更新) 一.版本管理工具`Subversion` 二.UML工具 三.文档编辑工具 其它.保养自己的工具 ...
最新文章
- iOS开发UI篇—实现UITableview控件数据刷新
- 矩阵运算和文本处理中的分类问题
- Redis-学习笔记03【Redis持久化】
- HDU - 7008 水题(打表)
- Web框架与HTTP协议
- CentOS 6.8内核版本升级(升级至3.10)(转)
- 【毕业设计】PHP课程网站络管理系统(源代码+论文)
- Doris之BE的所有配置项(全面)
- 【TSP】基于matlab蚁群算法求解旅行商问题【含Matlab源码 398期】
- M3U8视频下载为mp4
- 北斗时钟同步服务器,电力系统卫星时钟-GPS北斗时钟方案
- 在哪儿比较好下载建筑学西方近现代的外文文献?
- iOS -- 播放本地音频文件 (Swift)
- 敏捷实践 | 如何正确使用故事点预估工作量?
- JavaScript实现Fly Bird小游戏
- 小程序验证身份证号、验证手机号方法
- 配置 择时 sel stock
- React获取到用户当前位置
- 程序人生 - 致毕业生:那些年我们错过的 “BAT”
- Python函数:np.sum()以及axis=0、axis=1用法
热门文章
- 拒绝java_java拒绝策略 - V丶zxw的个人空间 - OSCHINA - 中文开源技术交流社区
- 微信小程序(原生):基本开发相关文档
- 基于linux的贪吃蛇游戏设计_基于ECS的游戏引擎架构设计「译」
- COBIT简介 (一)
- 第五章--第八章 因果图 正交试验表 状态转移 流程分析
- java中菜单的数据库_java将数据库中菜单表中内容转化成一个导航树
- IMX6开发板支持Android|Linux + Qt|Ubuntu|Debian|Youcto系统
- C#操作xml文档,cuid,dategridview显示数据
- Composer 的简介、安装及使用
- iOS设备限制境外交易(支付交易风险控制)