首页 > 解决方案 > 用于 Python 加密的 AES 密钥

问题描述

我的python代码中有数据库凭据,我想对其进行加密,通过解密在运行时使用该值。

我在stackoverflow的帮助下找到了以下代码并按预期工作

from Crypto.Cipher import AES
import base64

msg_text = b'test some plain text here'.rjust(32)
secret_key = b'1234567890123456' # create new & store somewhere safe

cipher = AES.new(secret_key,AES.MODE_ECB) # never use ECB in strong systems obviously
encoded = base64.b64encode(cipher.encrypt(msg_text))
print(encoded)
# ...
decoded = cipher.decrypt(base64.b64decode(encoded))
print(decoded.strip())

上面的代码有 secret_key 和评论说要创建新的密钥。

  1. 如何创建密钥以及可以从哪里创建?

  2. 存储密钥的推荐位置是什么?有没有推荐保存的结构/地方?我认为它应该保存在数据库中

  3. 上面的代码是加密和解密的强方法吗?如果可以篡改,应该采取什么方法呢?提供示例链接将是一个很大的帮助

标签: pythonpython-3.xencryptionaes

解决方案


  1. 您可以使用密码并在运行时使用PBKDF2函数生成密钥,而不是将密码硬编码到源代码中。

  2. 密码不应保存在数据库或文件中。你必须留在记忆中。

  3. ECB 模式不安全,它会泄露数据的模式,请参阅维基百科中的企鹅。您应该使用CBC模式或CTR模式进行加密。但是请记住,虽然您可以使用 ECB 模式执行相等查询,但不能使用 CBC 或 CTR 模式执行。如果欧洲央行模式适合你的情况,那就是;该模式不是安全问题,您可以使用 ECB。


推荐阅读