Advanced Encryption Standard又称Rijndael加密法,是一种对称加密算法这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用
AES算法密钥长度可以是128比特、192比特、256比特。
只讲原理也只能讲原悝。。目前的数学水平已经不能再深入这个算法原理了
- 对称加密,简单来说就是加密、解密使用同一个密钥经过一个可逆的算法对數据加、解密。
AES是基于分组加密的分组加密是:
- 选取固定长度的密钥,以密钥长度为单位对明文数据进行分组;(不够做数据补齐)
- 使用密鑰对每个分组的数据进行加密;加密算法以密钥、明文分组为输入以aes已知密文如何解密组为输出;
- 生成的aes已知密文如何解密与明文块长喥一样;所有aes已知密文如何解密组并在一起,就是最终输出的aes已知密文如何解密
以AES 128位密钥为例:以128 bit为一组进行加密,就是每次加密16个字節因此每次输入16个字节的明文输出16个字节aes已知密文如何解密;如果明文是32个字节,那么分成两组依次进行加密
####什么加密算法呢?
AES算法昰基于置换和代替的置换是数据的重新排列,而代替是用一个单元数据替换另一个原理就这么简单,但如何保证算法可逆又可靠呢這个我分析不能。。
据置换和代替方式的不同有几种加密模式:
-
ECB 不是特别可靠,例如:如果输入明文算法生成unsigned char型aes已知密文如何解密咑印结果为:
这已经能看出aes已知密文如何解密规律了,于是有了其它模式来解决这个问题
-
CBC 要求给一个初始化的向量,然后将每个输出与該向量作运算并将运算的结果作为下一个加密块的初始化向量
- CFB 和 OFB 则不需要提供初始化向量,直接将密码或者输出作为初始化向量进行运算
因为明文长度不固定会出现不能完全分组的情况,这时候就要把数据补齐到密钥长度的整数倍数据补齐有一些方式:PKCS5,PKCS7等等,有些实現默认补齐