开发者社区> 浩宇天尚> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

JAVA实现DES加解密实现详解

简介:
+关注继续查看

DES加密介绍
       DES是一种对称加密算法,所谓对称加密算法即:加密和解密使用相同密钥的算法。DES加密算法出自IBM的研究,后来被美国政府正式采用,之后开始广泛流传,但是近些年使用越来越少,因为DES使用56位密钥,以现代计算能力,24小时内即可被破解。     虽然如此,在某些简单应用中,我们还是可以使用DES加密算法,本文简单讲解DES的JAVA实现
。注意:DES加密和解密过程中,密钥长度都必须是8的倍数

packageutil;

importjava.security.SecureRandom;
importjavax.crypto.spec.DESKeySpec;
importjavax.crypto.SecretKeyFactory;
importjavax.crypto.SecretKey;
importjavax.crypto.Cipher;
publicclassDES{
publicDES(){
}
//测试
publicstaticvoidmain(Stringargs[]){
//待加密内容
Stringstr="测试内容";
//密码,长度要是8的倍数
Stringpassword=

"9588028820109132570743325311898426347857298773549468758875018579537757772163084478873699447306034466200616411960574122434059469100235892702736860872901247123456";
byte[]result=DES.encrypt(str.getBytes(),password);
System.out.println("加密后:"+newString(result));

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

}

/**
*加密
*@paramdatasourcebyte[]
*@parampasswordString
*@returnbyte[]
*/
publicstaticbyte[]encrypt(byte[]datasource,Stringpassword){
try{
SecureRandom random=new SecureRandom();
DESKeySpec desKey=new DESKeySpec(password.getBytes());
//创建一个密匙工厂,然后用它把DESKeySpec转换成
SecretKeyFactory keyFactory=SecretKeyFactory.getInstance("DES");
SecretKey securekey=keyFactory.generateSecret(desKey);
//Cipher对象实际完成加密操作
Ciphercipher=Cipher.getInstance("DES");
//用密匙初始化Cipher对象
cipher.init(Cipher.ENCRYPT_MODE,securekey,random);
//现在,获取数据并加密
//正式执行加密操作
returncipher.doFinal(datasource);
}catch(Throwablee){
e.printStackTrace();
}
returnnull;
}
/**
*解密
*@paramsrcbyte[]
*@parampasswordString
*@returnbyte[]
*@throwsException
*/
publicstaticbyte[]decrypt(byte[]src,Stringpassword)throwsException{
//DES算法要求有一个可信任的随机数源
Secure Random random=newSecureRandom();
//创建一个DESKeySpec对象
DESKeySpecdesKey=newDESKeySpec(password.getBytes());
//创建一个密匙工厂
SecretKeyFactorykeyFactory=SecretKeyFactory.getInstance("DES");
//将DESKeySpec对象转换成SecretKey对象
SecretKey securekey=keyFactory.generateSecret(desKey);
//Cipher对象实际完成解密操作
Cipher cipher=Cipher.getInstance("DES");
//用密匙初始化Cipher对象
cipher.init(Cipher.DECRYPT_MODE,securekey,random);
//真正开始解密操作
returncipher.doFinal(src);
}
}

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
JAVA DES加密解密代码范例
JAVA DES加密解密代码范例
119 0
JAVA和C# 3DES加密解密
国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私募机构九鼎控股打造,九鼎投资是在全国股份转让系统挂牌的公众公司,股票代码为430719,为“中国PE第一股”,市值超1000亿元。
862 0
【推荐】JAVA基础◆浅谈3DES加密解密
浅谈3DES加密解密   (注:本文不深入探讨3DES的加密原理,只着重说明在Java中使用3DES加密解密以及常见问题)       从数据安全谈起       当你使用网银时,是否担心你的银行卡会被盗用?     当你和朋友用QQ进行聊天时,是否担心你的隐私会被泄露?     作为开发者,编写安全的代码比编写优雅的代码更重要,因为安全是一切应用之根本!为了确保数据不被侵犯,数据加密/解密技术运用而生。
1031 0
C# Java DES加密解密
先来个C#版的: public class DESHelper { /// /// DES加密算法 /// /// 要加密的字符串 /// 加密码Key /// 正确...
964 0
+关注
文章
问答
文章排行榜
最热
最新
相关电子书
更多
JAVA反射原理以及一些常见的应用
立即下载
MySQL Java开发实战
立即下载
JAVA 应用排查全景图
立即下载