Python AES 加密解密 - 使用 pycryptodome 库
在 Python 中,可以使用 pycryptodome 库来实现 AES 加解密。\n\n首先,需要安装 pycryptodome 库。可以使用以下命令进行安装:\n\n\npip install pycryptodome\n\n\n接下来,可以使用以下代码来实现 AES 加解密:\n\npython\nfrom Crypto.Cipher import AES\nfrom Crypto.Util.Padding import pad, unpad\nfrom Crypto.Random import get_random_bytes\n\n# 生成随机的 16 字节密钥\nkey = get_random_bytes(16)\n\n# 加密函数\ndef encrypt(plain_text):\n cipher = AES.new(key, AES.MODE_CBC)\n cipher_text = cipher.encrypt(pad(plain_text.encode(), AES.block_size))\n return cipher.iv + cipher_text\n\n# 解密函数\ndef decrypt(cipher_text):\n iv = cipher_text[:AES.block_size]\n cipher = AES.new(key, AES.MODE_CBC, iv)\n plain_text = unpad(cipher.decrypt(cipher_text[AES.block_size:]), AES.block_size)\n return plain_text.decode()\n\n# 测试\ntext = "Hello, AES!"\ncipher_text = encrypt(text)\nprint(cipher_text)\nplain_text = decrypt(cipher_text)\nprint(plain_text)\n\n\n在上述代码中,encrypt 函数使用 AES 的 CBC 模式进行加密,首先生成一个随机的 16 字节密钥,然后使用该密钥和随机生成的初始化向量(iv)创建 AES 对象。接着,使用 pad 函数对明文进行填充,并调用 encrypt 方法进行加密,返回 iv 和密文的组合。\n\ndecrypt 函数使用相同的密钥和 iv 创建 AES 对象,并调用 decrypt 方法对密文进行解密。解密后,使用 unpad 函数去除填充,并返回解密后的明文。\n\n在测试中,我们加密了字符串 "Hello, AES!" 并解密了密文,最后输出了明文。\n\n请注意,AES 加密算法需要使用相同的密钥和 iv 才能正确解密密文。因此,在实际应用中,需要将密钥和 iv 保存好以便解密时使用。
原文地址: https://www.cveoy.top/t/topic/pVl5 著作权归作者所有。请勿转载和采集!