首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

PKI体系简易JAVA兑现(二):AES对称加密

2012-09-19 
PKI体系简易JAVA实现(二):AES对称加密PKI体系中关键的一环是消息体本身的加密传输。消息的加密可以采用非对

PKI体系简易JAVA实现(二):AES对称加密

PKI体系中关键的一环是消息体本身的加密传输。消息的加密可以采用非对称加密和对称加密。

?

1.概念:

对称密钥加密:又叫专用密钥加密,即发送和接收数据的双方必使用相同的密钥对明文进行加密和解密运算。简单的说,就是同一个密钥即可以加密也可以用来解密。常见的算法如DES,AES

?

非对称密钥加密:采用双钥密码系统的加密方法,在一个过程中使用两个密钥,一个用于加密,另一个用于解密,这种加密方法称为非对称加密,也称为公钥加密,因为其中一个密钥是公开的(另一个则需要保密)。常见算法如RSA

?

对称加密 ? ? ? ?速度快,安全性较低

非对称加密 ? ??速度较慢,安全性较高

?

2.为什么用对称加密消息正文

那假设我们要对QQ消息进行加密,采用非对称加密太耗费性能,速度又比较慢,而直接只用对称加密又显得没达到严格加密的要求。因此现行通常的做法是:

?

QQ聊天内容采用对称密钥,这样速度快,而在正式开始之前先用非对称密钥加密 对称密钥

?

这样相当于先建立了一个比较安全的可信通道,然后在这个通道里用比较快的加密方法通讯。

?

3.JAVA实现:

因此我们这里先关注消息正文的对称加密的实现。我们这里采用AES进行对称加密。

?

我们设计一个实现类叫做AESImpl, 理所当然,这个类最基本的就是提供加密和解密的功能。但是现实的情况可能会复杂一些。我们可能是传输一段文字(String),也有可能是发送一个文件(File), 而对于加密,我们可能需要自己设定密码,也可能是要程序自动生成一个密钥文件用于加解密。?

?

不过无论是什么需要,AES加解密JAVA实现的根本是一致的。都是通过javax.crypto.Cipher对象。甚至是加密解密这两种逆过程,都仅仅是cipher.init方法传入参数选Cipher.ENCRYPT_MODE还是Cipher.DECRYPT_MODE罢了。因此我们可以抽出一个"根AES加解密方法",用于持有加解密的公共逻辑,并且用于应对不同的加解密场景。

?

其他话就不多说了,具体看代码最清楚了:

?

?

?

热点排行