AES加密算法是双向加密,它与单向加密MD5摘要算法不同。我们都是知道双向加密是可逆的,存在密文的密钥,AES算法是现在比较流行的加密算法之一。那么,AES加密解密算法原理是什么,主要有哪些用途呢?
AES加密算法原理
1.密钥
密钥是AES算法实现加密和解密的根本。对称加密算法之所以对称,是因为这类算法对明文的加密和解密需要使用同一个密钥。
AES支持三种长度的密钥:128位,192位,256位。平时大家所说的AES128,AES192,AES256,实际上就是指的AES算法对不同长度密钥的使用。
2.填充
要想了解填充的概念,我们先要了解AES的分组加密特性。什么是分组加密呢?我们来看看下面这张图:AES算法在对明文加密的时候,并不是把整个明文一股脑加密成一整段密文,而是把明文拆分成一个个独立的明文块,每一个明文块长度128bit。
这些明文块经过AES加密器的复杂处理,生成一个个独立的密文块,这些密文块拼接在一起,就是最终的AES加密结果。
假如一段明文长度是192bit,如果按每128bit一个明文块来拆分的话,第二个明文块只有64bit,不足128bit。这时候怎么办呢?就需要对明文块进行填充(Padding)。
填充涉及以下三种填充模式:
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进行加密解密的网站,确实有一些是可以“解密”的,我们可以通过md5.cn网站,然后点击【在线工具】-【AES加密&解密】,在打开的页面中输入明文/密文,然后输入密钥,点击加密或解密按钮,然后在下方就会显示得到的结果。大家可以去试一试。
AES有的用途
AES具有加密解密速度迅速和编码紧凑等特点,有很大的开发潜力和较高的使用价值,被应用至信息保护,电子安全等方面及领域。
标签:AES,加密,字节,解密,明文,密钥 From: https://blog.51cto.com/u_15693888/5991697