AES-CBC-128bit加密算法
AES(高级加密标准,Advanced Encryption Standard),在密码学中又称 Rijndael 加密法,是美国联邦*采用的一种分组加密标准。这个标准用来替代原先的 DES,目前已经广为全世界所使用,成为对称**算法中最流行的算法之一。更详细的介绍:https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation
AES-CBC特点
AES-CBC原理
其中不同长度的秘钥,对应的加密轮数也不一样:
秘钥长度(字节) | 分组大小 | 加密轮数 | |
AES-128 | 4 | 4 | 10 |
AES-192 | 6 | 4 | 12 |
AES-256 | 8 | 4 | 14 |
AES加密主要包括两个步骤:**扩展和明文加密
**扩展:将输入的**(16字节、24字节和32字节)进行扩展,根据**长度的不同,得到扩展后的**进行加密的轮数也不相同。
明文加密:
- 字节替换:将输入状态的每个字节使用S盒上对应的字节进行替换。
- 行位移:状态的第一行保持不变。第二行循环左移一个字节,第三行左移两个字节,第四行循环左移三个字节。
- 列混淆:将每列中的每个字节映射为一个新值,新值由该列中的4个字节通过函数变换得到。
- 秘钥轮加:将当前分组和扩展**的一部分进行按位异或。
详细可参考:https://www.jianshu.com/p/436e82a3a91a
AES-CBC-128 0填充加密解密代码: