您的位置:首页 > 编程语言 > Java开发

Java加密与解密的艺术-对称加密算法

2015-08-27 16:39 330 查看
解密算法是加密算法的逆运算,加密密钥和解密密钥相同。如果我们把Base64算法改良,将其字符映射表作为密钥保存,就可以把这个改良后的Base64算法作为一种对称加密算法来看。

DESede算法(又称为TrippleDES或3DES算法)翻译成中文就是三重DES算法。

DES算法具有代表性,堪称典范;DESede是DES算法的变种,AES算法则作为DES算法的替代者;而IDEA算法作为一种强加密算法,成为电子邮件加密邮件PGP(Pretty Good Privacy)的核心算法之一。

DESede算法基于DES算法进行三重迭代,增加了算法安全性。

DES算法密钥偏短,仅有56位,迭代次数偏少。19986年后,实用化DES算法破译机的出现彻底宣告DES算法已不具备安全性。1999年NIST颁布新标准,规定DES算法只能用于遗留加密系统。以当前计算机技术能力,经DES加密的数据在24小时内可能被破解。

DES算法也成为最应学习的对称加密算法,其地位堪比C语言在计算机语言中的地位。

我们知道,密钥长度与安全性成正比,但Java 7仅支持56位密钥长度,作为补充,Bouncy Castle提供了64位长度密钥支持。

Cipher.init(Cipher.ENCRYPT_MODE,secretKey); init方法中的模式由’Cipher.ENCRYPT_MODE’改为’DECRYPT_MODE’则可以作为解密处理。

在实际应用中,密文通常以二进制数据传输/存储,而密钥通常会被转换为可见字符存储。

DES算法在设计上的漏洞已经不能通过单纯地增加密钥长度来弥补,这引发了对称加密算法研发竞赛。DESede和AES正是这场竞赛中具有代表性的算法。

DESede算法处理速度较慢,密钥计算时间较长,加密效率不高等问题使得对称加密算法的发展仍不容乐观。

DESede算法将密钥长度增至112位或168位,抗穷举能力显著增强,单核心仍是DES算法。

除了将密钥材料实现类由DESKeySpec类转换为DESedeKeySpec类外,DESede算法与DES算法实现的主要差别在于算法、密钥长度两个方面。

作者与合作方商定加密算法时,对方技术水准较高,要求使用PKCS7Padding填充方式,着实让人犯难,好在发现了Bouncy Castle,才解决了这一技术难题。

final Stirng CIPHER_ALGORIGHM=”DESede/ECB/PKCS5Padding”;

Cipher cipher = Cipher.getInstance(CIPHER_ALGORITHM);

经过验证,目前采用的AES算法能够有效抵御已知的针对DES算法的所有攻击方法,如部分差分攻击、相关密钥攻击等。至今还没有AES破译的官方报道。

AES算法因密钥建立时间短、灵敏性好、内存要求低等优点,在各个领域得到广泛的研究与应用。

IDEA算法使用长度为128位的密钥,数据块大小为64位。从理论上讲,IDEA属于’强加密算法’,至今还没有出现对该算法的有效攻击算法(以目前计算机水平,破译一个IDEA密钥至少需要10^13年)

为防止传递的数据在网络传递过程中被篡改,我们可以对数据进行消息摘要,并对该摘要进行验证。

调用AESCoder类的decrypt()方法对请求内容解密,并将解密后的内容输出到控制台中。同时我们将从HTTP Header中获得此次交互数据的摘要信息,并对此验证。

代码参见github:

https://github.com/DISSIDIA-986/EncDecAboutJava
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: