AES-CBC-128bit加密算法

AES(高级加密标准,Advanced Encryption Standard),在密码学中又称 Rijndael 加密法,是美国联邦政府采用的一种分组加密标准。这个标准用来替代原先的 DES,目前已经广为全世界所使用,成为对称密钥算法中最流行的算法之一。更详细的介绍:https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation

AES-CBC特点

AES-CBC-128bit加密算法_第1张图片

AES-CBC原理

AES-CBC-128bit加密算法_第2张图片

其中不同长度的秘钥,对应的加密轮数也不一样:

  秘钥长度(字节) 分组大小 加密轮数
AES-128 4 4 10
AES-192 6 4 12
AES-256 8 4 14

AES加密主要包括两个步骤:密钥扩展明文加密

密钥扩展:将输入的密钥(16字节、24字节和32字节)进行扩展,根据密钥长度的不同,得到扩展后的密钥进行加密的轮数也不相同。

明文加密:

  1. 字节替换:将输入状态的每个字节使用S盒上对应的字节进行替换。
  2. 行位移:状态的第一行保持不变。第二行循环左移一个字节,第三行左移两个字节,第四行循环左移三个字节。
  3. 列混淆:将每列中的每个字节映射为一个新值,新值由该列中的4个字节通过函数变换得到。
  4. 秘钥轮加:将当前分组和扩展密钥的一部分进行按位异或。

详细可参考:https://www.jianshu.com/p/436e82a3a91a

AES-CBC-128 0填充加密解密代码:

https://github.com/sh2120170809/aes_cbc_128

你可能感兴趣的:(C++,aes,加密)