JAVA实现DES加密
⼀、实验⽬的
通过使⽤Java标准库的密码学算法调⽤DES对称加密算法,能够编写简单的实验代码进⾏正确的DES加密和解密⼆、实验要求
1. 掌握搭建JAVA语⾔的开发环境;
2. 掌握Java标准库中密码学算法的使⽤⽅法;
3. 熟悉DES对称加密算法;
4. 掌握DES对称加密算法的简单代码实验。
三、开发环境
JDK1.6,Java相关开发环境(本实验以Windows平台为例)
【1-3】DES对称加密实验
1、 给定⼀个String类型的参数,使⽤如下的函数进⾏密钥初始化
private static Key generateKey(String password) throws Exception {
DESKeySpec dks = new Bytes(CHARSET));
SecretKeyFactory keyFactory = Instance(ALGORITHM);
ateSecret(dks);
}
2、 给定String类型的密钥和待加密消息,使⽤如下的函数进⾏加密:
public static String encrypt(String data, String password) {
try{
byte[] Bytes();
SecureRandom random = new SecureRandom();
DESKeySpec desKey = new Bytes());
/
/创建⼀个密匙⼯⼚,然后⽤它把DESKeySpec转换成
SecretKeyFactory keyFactory = Instance(“DES”);
SecretKey securekey = ateSecret(desKey);
//Cipher对象实际完成加密操作
Cipher cipher = Instance(“DES”);
//⽤密匙初始化Cipher对象
cipher.init(Cipher.ENCRYPT_MODE, securekey, random);
//现在,获取数据并加密
//正式执⾏加密操作
return new String(cipher.doFinal(datasource));
}catch(Throwable e){
e.printStackTrace();
}
return null;
}
3、 给定String类型的密钥和待解密的密⽂,使⽤如下的函数进⾏解密:
public static String decrypt(String src1, String password) throws Exception { byte[] src= Bytes();
// DES算法要求有⼀个可信任的随机数源
SecureRandom random = new SecureRandom();
// 创建⼀个DESKeySpec对象
DESKeySpec desKey = new Bytes());
// 创建⼀个密匙⼯⼚
SecretKeyFactory keyFactory = Instance(“DES”);
// 将DESKeySpec对象转换成SecretKey对象
SecretKey securekey = ateSecret(desKey);
// Cipher对象实际完成解密操作
Cipher cipher = Instance(“DES”);
// ⽤密匙初始化Cipher对象
cipher.init(Cipher.DECRYPT_MODE, securekey, random);
// 真正开始解密操作
return new String(cipher.doFinal(src));
}
【1-4】参考代码
import java.security.SecureRandom;
import java.util.Scanner;
pto.spec.DESKeySpec;
pto.SecretKeyFactory;
pto.SecretKey;
pto.Cipher;
public class DESUtils {
//测试
public static void main(String args[]){
//待加密内容
System.out.print("请输⼊8位数的密码回车结束: ");
Scanner sc=new Scanner(System.in);
sc.useDelimiter("\n")
String password ="";
String str ="";
if(sc.hasNext())
{
();
}
//密码,长度要是8的倍数
System.out.print("请输⼊需要加密的⽂字回车结束: ");
if(sc.hasNext())
{
();
}
byte[] result = Bytes(),password);
System.out.println("加密后:"+new String(result));
System.out.print("输⼊密钥按回车后可对密⽂数据进⾏解密:");
if(sc.hasNext())
{
();
}
//直接将如上内容解密
try{
java源代码加密byte[] decryResult = DES.decrypt(result, str);
System.out.println("解密后:"+new String(decryResult));
}catch(Exception e1){
e1.printStackTrace();
}
sc.close();
}
public static byte[]encrypt(byte[] datasource, String password){
public static byte[]encrypt(byte[] datasource, String password){
try{
SecureRandom random =new SecureRandom();
DESKeySpec desKey =new Bytes());
//创建⼀个密匙⼯⼚,然后⽤它把DESKeySpec转换成
SecretKeyFactory keyFactory = Instance("DES"); SecretKey securekey = ateSecret(desKey);
//Cipher对象实际完成加密操作
Cipher cipher = Instance("DES");
//⽤密匙初始化Cipher对象
cipher.init(Cipher.ENCRYPT_MODE, securekey, random);
//现在,获取数据并加密
//正式执⾏加密操作
return cipher.doFinal(datasource);
}catch(Throwable e){
e.printStackTrace();
}
return null;
}
public static byte[]decrypt(byte[] src, String password)throws Exception { // DES算法要求有⼀个可信任的随机数源
SecureRandom random =new SecureRandom();
// 创建⼀个DESKeySpec对象
DESKeySpec desKey =new Bytes());
// 创建⼀个密匙⼯⼚
SecretKeyFactory keyFactory = Instance("DES");
// 将DESKeySpec对象转换成SecretKey对象
SecretKey securekey = ateSecret(desKey);
// Cipher对象实际完成解密操作
Cipher cipher = Instance("DES");
// ⽤密匙初始化Cipher对象
cipher.init(Cipher.DECRYPT_MODE, securekey, random);
// 真正开始解密操作
return cipher.doFinal(src);
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论