我知道还有其他问题问到类似的问题,但我相信这个设计解决了在这些问题中提出的许多问题。我也不关心是否有数据库可供存储,只是数据库不存储任何机密。
Using some key derivation function KDF
With master password provided from elsewhere
Password requirements are the rules of what are allowed by the site,
i.e. length, allowed character classes, required classes
# To register
在Python 3应用程序中,我需要使用自己的密码加密用户的数据。我在使用密码穹顶库。
考虑到AES需要一个固定大小的密钥(示例中为128位),我使用PBKDF2来获取密钥。下面是我在代码中使用的类。
我将用于密钥派生的salt (代码中的salt)和初始化向量(代码中的iv)存储在消息本身的顶部。事实上,对于我所理解的(阅读文档),盐和iv都必须保密。
这是一个正确的方法,还是你能建议我一个更好的方法?
from Crypto.Cipher import AES
from Crypto.Random import get_random_bytes
from Crypto.Protocol i