Python 从变量生成AES密钥

Python 从变量生成AES密钥,python,encryption,cryptography,Python,Encryption,Cryptography,我想用Python编写一个自定义密钥生成器。此密钥将作为AES算法的输入(与纯文本一起)进行加密(我可能会使用pycrypto或m2crypto库进行加密) 但是密钥生成器必须是自定义的,因为它将根据用户提供的字符串生成密钥 str = date + case-id + name where: date = current date when a case was submitted (we work on separate security analysis cases, submitte

我想用Python编写一个自定义密钥生成器。此密钥将作为AES算法的输入(与纯文本一起)进行加密(我可能会使用
pycrypto
m2crypto
库进行加密)

但是密钥生成器必须是自定义的,因为它将根据用户提供的字符串生成密钥

str = date + case-id + name

where:
date = current date when a case was submitted 
(we work on separate security analysis cases, submitted on our ticketing tool)
name = person handling the case
case-id = the ticket id with which it was submitted.
解密程序(在不同的系统上)需要知道相同的密钥,以便解密数据

因此,对于特定的订单,必须为一组特定的
日期
名称
案例id
固定密钥,并且只有在
订单
中的任何一个发生变化时,密钥才会不同,并且不应每次都是随机的

我已经阅读了一些stackoverflow文章,其中建议使用

random_key = os.urandom(16)  
但我不相信这会达到我的目的

如果我想从头开始设计一个密钥生成器,或者对现有库提出一些建议,我将不胜感激

您正在寻找一种算法,例如Argon2或PBKDF2。它将允许您确定地将从输入值生成的“密码”扩展到合适的密钥中

但是,请注意,您的密码可能仍然很弱。我怀疑病例id和日期之间有很强的相关性。名字可能只是很容易找到的一小部分人。另外,这些数据不是由您的系统随加密数据一起发送的吗?这使得将其用作密码成为一个坏主意