AES加密算法是双向加密,它与单向加密MD5摘要算法不同。我们都是知道双向加密是可逆的,存在密文的密钥,AES算法是现在比较流行的加密算法之一。那么,AES加密解密算法原理是什么,主要有哪些用途呢?

AES加密解密算法原理,以及AES有哪些用途?_加密算法

AES加密算法原理

密钥是AES算法实现加密和解密的根本。对称加密算法之所以对称,是因为这类算法对明文的加密和解密需要使用同一个密钥。

AES支持三种长度的密钥:128位,192位,256位。平时大家所说的AES128,AES192,AES256,实际上就是指的AES算法对不同长度密钥的使用。

要想了解填充的概念,我们先要了解AES的分组加密特性。什么是分组加密呢?我们来看看下面这张图:AES算法在对明文加密的时候,并不是把整个明文一股脑加密成一整段密文,而是把明文拆分成一个个独立的明文块,每一个明文块长度128bit。

这些明文块经过AES加密器的复杂处理,生成一个个独立的密文块,这些密文块拼接在一起,就是最终的AES加密结果。

假如一段明文长度是192bit,如果按每128bit一个明文块来拆分的话,第二个明文块只有64bit,不足128bit。这时候怎么办呢?就需要对明文块进行填充(Padding)。

填充涉及以下三种填充模式:

AES加密解密算法原理,以及AES有哪些用途?_加密算法_02

NoPadding:

不做任何填充,但是要求明文必须是16字节的整数倍。

PKCS5Padding(默认):

如果明文块少于16个字节(128bit),在明文块末尾补足相应数量的字符,且每个字节的值等于缺少的字符数。

比如明文:{1,2,3,4,5,a,b,c,d,e},缺少6个字节,则补全为{1,2,3,4,5,a,b,c,d,e,6,6,6,6,6,6}

ISO10126Padding:

如果明文块少于16个字节(128bit),在明文块末尾补足相应数量的字节,最后一个字符值等于缺少的字符数,其他字符填充随机数。

比如明文:{1,2,3,4,5,a,b,c,d,e},缺少6个字节,则可能补全为{1,2,3,4,5,a,b,c,d,e,5,c,3,G,$,6}

关于AES解密

AES加密解密算法原理,以及AES有哪些用途?_加密算法_03

网上有很多号称可以对AES进行加密解密的网站,确实有一些是可以“解密”的,我们可以通过md5.cn网站,然后点击【在线工具】-【AES加密&解密】,在打开的页面中输入明文/密文,然后输入密钥,点击加密或解密按钮,然后在下方就会显示得到的结果。大家可以去试一试。

AES有的用途

AES具有加密解密速度迅速和编码紧凑等特点,有很大的开发潜力和较高的使用价值,被应用至信息保护,电子安全等方面及领域。