浅析AES加密技术及其应用

2019 年 5 月 8 日 0 Comments 666 Views 1 Thumb

AES最一种常见的对称加密算法,对称加密算法也就是加密和解密用相同的密钥。加密流程如下:
浅析AES加密技术及其应用

明文P:没有经过加密的数据。

密钥K:用来加密明文的密码,在对称加密算法中,加密与解密的密钥是相同的。密钥为接收方与发送方协商产生,但不可以直接在网络上传输,否则会导致密钥泄漏,通常是通过非对称加密算法加密密钥,然后再通过网络传输给对方,或者直接面对面商量密钥。密钥是绝对不可以泄漏的,否则会被攻击者还原密文,窃取机密数据。

AES加密函数
设AES加密函数为E,则 C = E(K, P),其中P为明文,K为密钥,C为密文。也就是说,把明文P和密钥K作为加密函数的参数输入,则加密函数E会输出密文C。

密文C
经加密函数处理后的数据

AES解密函数
设AES解密函数为D,则 P = D(K, C),其中C为密文,K为密钥,P为明文。也就是说,把密文C和密钥K作为解密函数的参数输入,则解密函数会输出明文P。

AES的应用
语言:java
jdk版本:1.7
算法:AES
密钥长度:32 ,也就是AES-256
AES为分组密码,分组密码也就是把明文分成一组一组的,每组长度相等,每次加密一组数据,直到加密完整个明文。在AES标准规范中,密钥的长度可以使用128位、192位、256位。(每个字节8位)

加密模式:ECB
电码本模式,这种模式是将整个明文分成若干段相同的小段,然后对每一小段进行加密。

填充模式:PKCS7Padding
在分组加密算法中,我们首先要将原文进行分组,然后每个分组进行加密,然后组装密文。
假设我们现在的数据长度是24字节,BlockSize是8字节,那么很容易分成3组,一组8字节;
因为加密算法的需求,明文字节必须按照block进行填充对齐,才能方便进行加密运算。

加密结果编码方式:Base64

环境准备
JAVA实现“AES/ECB/PKCS7Padding”对称加解密,尤其是 AES256的加解密需要注意两点:
1、技术出口限制,国内的JDK 默认不支持;
2、PKCS7Padding JAVA默认不支持PKCS7Padding填充模式,需借助第三方提供者。

JAVA代码:
浅析AES加密技术及其应用
浅析AES加密技术及其应用

输出结果:
浅析AES加密技术及其应用