利用JAVA实现DES加密算法
程序员文章站
2022-05-18 08:31:18
des加密介绍des是一种对称加密算法,所谓对称加密算法即:加密和解密使用相同密钥的算法。des加密算法出自ibm的研究,后来被美国*正式采用,之后开始广泛流传,但是近些...
des加密介绍
des是一种对称加密算法,所谓对称加密算法即:加密和解密使用相同密钥的算法。des加密算法出自ibm的研究,后来被美国*正式采用,之后开始广泛流传,但是近些年使用越来越少,因为des使用56位密钥,以现代计算能力,24小时内即可被破解。虽然如此,在某些简单应用中,我们还是可以使用des加密算法,本文简单讲解des的java实现。
java实现
加密
代码有详细解释,不多废话。
注意:des加密和解密过程中,密钥长度都必须是8的倍数
复制代码 代码如下:
public byte[] descrypto(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;
}
解密
代码有详细注释,不多废话
复制代码 代码如下:
private 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);
}
测试场景
例如,我们可以利用如上函数对字符串进行加密解密,也可以对文件进行加密解密,如:
复制代码 代码如下:
//待加密内容
string str = "测试内容";
//密码,长度要是8的倍数
string password = "12345678";
byte[] result = descrypto.descrypto(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();
}