JAVA实现DES加密实现详解

package util;

import java.security.SecureRandom;
import
javax.crypto.spec.DESKeySpec;
import javax.crypto.SecretKeyFactory;
import
javax.crypto.SecretKey;
import javax.crypto.Cipher;

/**
DES加密介绍
DES是一种对称加密算法,所谓对称加密算法即:加密和解密使用相同密钥的算法。DES加密算法出自IBM的研究,

后来被美国政府正式采用,之后开始广泛流传,但是近些年使用越来越少,因为DES使用56位密钥,以现代计算能力,

24小时内即可被破解。虽然如此,在某些简单应用中,我们还是可以使用DES加密算法,本文简单讲解DES的JAVA实现


注意:DES加密和解密过程中,密钥长度都必须是8的倍数
*/
public class DES {
public DES()
{
}
//测试
public static void main(String args[]) {

//待加密内容
String str = "测试内容";
//密码,长度要是8的倍数
String password =
"9588028820109132570743325311898426347857298773549468758875018579537757772163084478873699447306034466200616411960574122434059469100235892702736860872901247123456";

byte[] result = DES.encrypt(str.getBytes(),password);

System.out.println("加密后:"+new String(result));

//直接将如上内容解密
try {
byte[] decryResult =
DES.decrypt(result, password);
System.out.println("解密后:"+new
String(decryResult));
} catch (Exception e1) {

e1.printStackTrace();
}

}

/**
* 加密
* @param datasource byte[]
* @param password
String
* @return byte[]
*/
public static byte[]
encrypt(byte[] datasource, String password) {
try{

SecureRandom random = new SecureRandom();
DESKeySpec desKey = new
DESKeySpec(password.getBytes());

//创建一个密匙工厂,然后用它把DESKeySpec转换成
SecretKeyFactory keyFactory =
SecretKeyFactory.getInstance("DES");
SecretKey securekey =
keyFactory.generateSecret(desKey);
//Cipher对象实际完成加密操作
Cipher
cipher = Cipher.getInstance("DES");

//用密匙初始化Cipher对象
cipher.init(Cipher.ENCRYPT_MODE, securekey, random);

//现在,获取数据并加密
//正式执行加密操作
return cipher.doFinal(datasource);

}catch(Throwable e){
e.printStackTrace();
}

return null;
}
/**
* 解密
* @param src byte[]
*
@param password String
* @return byte[]
* @throws Exception

*/
public static byte[] decrypt(byte[] src, String password) throws
Exception {
// DES算法要求有一个可信任的随机数源
SecureRandom random = new
SecureRandom();
// 创建一个DESKeySpec对象
DESKeySpec desKey = new
DESKeySpec(password.getBytes());
// 创建一个密匙工厂
SecretKeyFactory
keyFactory = SecretKeyFactory.getInstance("DES");
//
将DESKeySpec对象转换成SecretKey对象
SecretKey securekey =
keyFactory.generateSecret(desKey);
// Cipher对象实际完成解密操作
Cipher
cipher = Cipher.getInstance("DES");
//
用密匙初始化Cipher对象
cipher.init(Cipher.DECRYPT_MODE, securekey, random);

// 真正开始解密操作
return cipher.doFinal(src);
}
}

时间: 2024-09-28 01:12:51

JAVA实现DES加密实现详解的相关文章

DES加密模式详解

DES加密模式详解 http://www.cnblogs.com/Lawson/archive/2012/05/20/2510781.html http://www.blogjava.net/wayne/archive/2011/05/23/350879.html 加密算法常见的有ECB模式和CBC模式: ECB模式:电子密本方式,这是JAVA封装的DES算法的默认模式,就是将数据按照8个字节一段进行DES加密或解密得到一段8个字节的密文或者明文,最后一段不足8个字节,则补足8个字节(注意:这里

安全和加密技术详解

安全和加密技术详解  目录         前言         一.加密技术分类           1.对称机密算法           2.非对称加密           3.单向散列           4.安全通信模型   前  言 随着网络通信和互联网时代的到来,与之而来的互联网安全问题面临很大的威胁.网络的传输的信息随时有可能会被不法分子截获.篡改,对于互联网数据安全和加密技术显得尤为重要. 加密技术其实是一门古老的学科.长期以来一直被应用于军事.情报等部门,例如早期古罗马的凯撒移

Java中的main()方法详解

在Java中,main()方法是Java应用程序的入口方法,也就是说,程序在运行的时候,第一个执行的方法就是main()方法,这个方法和其他的方法有很大的不同,比如方法的名字必须是main,方法必须是public static void 类型的,方法必须接收一个字符串数组的参数等等. 在看Java中的main()方法之前,先看一个最简单的Java应用程序HelloWorld,我将通过这个例子说明Java类中main()方法的奥秘,程序的代码如下: 1 /** 2 * Java中的main()方法

兼容PHP和Java的des加密解密代码分享

这篇文章主要介绍了兼容PHP和Java的des加密解密代码分享,适合如服务器是JAVA语言编写,客户端是PHP编写,并需要des加密解密的情况,需要的朋友可以参考下 php <?php class DES { var $key; var $iv; //偏移量 function DES($key, $iv=0) { $this->key = $key; if($iv == 0) { $this->iv = $key; } else { $this->iv = $iv; } } //加

Java下static关键字用法详解

Java下static关键字用法详解 本文章介绍了java下static关键字的用法,大部分内容摘自原作者,在此学习并分享给大家. Static关键字可以修饰什么? 从以下测试可以看出, static 可以修饰: 1. 语句块 2. 成员变量(但是不能修饰局部变量) 3. 方法 4. 接口(内部接口) 5. 类(只能修饰在类中的类, 即静态内部类) 6. jdk 1.5 中新增的静态导入 那么static 修饰的表示什么呢? 当创建一个类时,就是在创建一个新类型,描述这个类的对象的外观和行为,除

java中的io系统详解

java中的io系统详解 分类: JAVA开发应用 笔记(读书.心得)2009-03-04 11:26 46118人阅读 评论(37) 收藏 举报 javaiostreamconstructorstringbyte 相关读书笔记.心得文章列表 Java 流在处理上分为字符流和字节流.字符流处理的单元为 2 个字节的 Unicode 字符,分别操作字符.字符数组或字符串,而字节流处理单元为 1 个字节,操作字节和字节数组. Java 内用 Unicode 编码存储字符,字符流处理类负责将外部的其他

关于Objective-c和Java下DES加密保持一致的方式

转载自:http://www.cnblogs.com/janken/archive/2012/04/05/2432930.html 最近做了一个移动项目,是有服务器和客户端类型的项目,客户端是要登录才行的,登录的密码要用DES加密,服务器是用Java开发的,客户端要同时支持多平台(Android.iOS),在处理iOS的DES加密的时候遇到了一些问题,起初怎么调都调不成和Android端生成的密文相同.最终一个忽然的想法让我找到了问题的所在,现在将代码总结一下,以备自己以后查阅. 首先,Java

Java虚拟机之垃圾回收详解一

Java虚拟机之垃圾回收详解一 Java技术和JVM(Java虚拟机) 一.Java技术概述: Java是一门编程语言,是一种计算平台,是SUN公司于1995年首次发布.它是Java程序的技术基础,这些程序包括:实用程序.游戏.商业应用程序.在全世界范围内,Java运行在超过数十亿台个人计算机上,数十亿台设备上,还包括手机和电视设备.Java由一系列的关键组件作为一个整体构建出了Java平台. Java Runtime Edition 当你下载Java,你就得到了Java运行环境(JRE).JR

Java 8的default方法详解

Java 8的default方法详解 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs Java 8新增了default方法,它可以在接口添加新功能特性,而且还不影响接口的实现类.下面我们通过例子来说明这一点. public class MyClass implements InterfaceA { public static void main(String[] args){ } @Override public void saySomething(