最近项目需求需要用到TCP传输,为了保证安全传输使用AES,为了使
传输过程中减
数据量小,使用gzip压缩,特此分享一哈。
一、AES加密
关于AES的资料网上很多,个人觉得《加密与解密(第三版)》很不错,这本书中P155开始讲AES 下载地址:http://download.csdn.net/detail/qiwenmingshiwo/8755683
AES加解密算法的模式介绍 http://blog.csdn.net/searchsun/article/details/2516191
这个过程中我们使用 bcprov 这个jar包,官网: http://www.bouncycastle.org/
1. 我们秘钥的定义:
1234567891011121314public
final
static
CipherParameters keyParams1 =
new
ParametersWithIV(
new
KeyParameter(
new
byte
[] { (
byte
)
0x01
, (
byte
)
0x01
,
(
byte
)
0x01
, (
byte
)
0x01
, (
byte
)
0x01
, (
byte
)
0x01
,
(
byte
)
0x01
, (
byte
)
0x01
, (
byte
)
0xab
, (
byte
)
0x01
,
(
byte
)
0x01
, (
byte
)
0x01
, (
byte
)
0x01
, (
byte
)
0x01
,
(
byte
)
0x01
, (
byte
)
0x01
, (
byte
)
0x01
, (
byte
)
0x01
,
(
byte
)
0x01
, (
byte
)
0x01
, (
byte
)
0x01
, (
byte
)
0x01
,
(
byte
)
0x01
, (
byte
)
0xfc
, (
byte
)
0x01
, (
byte
)
0x01
,
(
byte
)
0x01
, (
byte
)
0xed
, (
byte
)
0x01
, (
byte
)
0x01
,
(
byte
)
0x01
, (
byte
)
0x01
}),
new
byte
[] { (
byte
)
0x01
,
(
byte
)
0x01
, (
byte
)
0x01
, (
byte
)
0x01
, (
byte
)
0x01
,
(
byte
)
0x01
, (
byte
)
0x01
, (
byte
)
0x01
, (
byte
)
0x01
,
(
byte
)
0x01
, (
byte
)
0x01
, (
byte
)
0x01
, (
byte
)
0x01
,
(
byte
)
0x01
, (
byte
)
0xcf
, (
byte
)
0x01
});
2.加密方法
12345678910111213141516
/**
* AES加密
* @param data数据
* @return
* @throws InvalidCipherTextException
*/
public
static
byte
[] encrypt(
byte
[] data)
throws
InvalidCipherTextException
{
BufferedBlockCipher cipher =
new
PaddedBufferedBlockCipher(
new
CBCBlockCipher(