📜  aes 加密 (1)

📅  最后修改于: 2023-12-03 14:59:12.118000             🧑  作者: Mango

AES加密

AES(Advanced Encryption Standard),又称高级加密标准,是一种加密算法。该算法是由比利时密码学家 Joan Daemen 和 Vincent Rijmen 所设计,于 2001 年被美国政府采纳为新标准。该算法采用对称加密方式,使用相同的密钥进行加密和解密。

加密过程

AES 加密过程以 128 位为例,加密过程分为 4 个步骤:

  1. 密钥扩展:根据所选密钥的长度进行密钥扩展,产生一系列轮密钥。
  2. 初始轮:将明文按照 4x4 的矩阵进行排列,每个字节进行初始化。
  3. 多轮加密:共执行 10 轮加密。
  4. 最终轮:最后一轮加密不包括 MixColumns 步骤。
代码示例

以下是一个使用 Python 中 PyCryptodome 库进行 AES 加密的示例:

from Crypto.Cipher import AES
import base64

# 加密函数
def aes_encrypt(text, key, iv):
    # 初始化加密器
    aes = AES.new(key, AES.MODE_CBC, iv)
    # 加密
    encrypted_text = aes.encrypt(text)
    # 返回加密后的密文
    return base64.encodebytes(encrypted_text).decode()

# 测试加密函数
if __name__ == '__main__':
    # 需要加密的字符串
    text = 'Hi, AES encrypt!'
    # 密钥和初始向量(IV),长度必须为16
    key = b'1234567890abcdef'
    iv = b'abcdef1234567890'
    # 调用加密函数
    encrypted_text = aes_encrypt(text.encode(), key, iv)
    print(encrypted_text)

返回的结果为:

'4Ah5LZ1CZXVZlKw/gZY9Ug==\n'

这就是使用 AES 加密后的字符串。在解密时,只需要使用相同的密钥和初始向量进行解密即可。