如何在Python中生成强的AES一次性会话密钥

10 投票
3 回答
29247 浏览
提问于 2025-04-16 11:51

我正在使用M2Crypto的AES来加密消息,但我对如何生成一个强随机的会话密钥以及它的长度感到困惑。M2Crypto有没有提供生成随机密钥的功能呢?

3 个回答

0

如果你是为了把信息加密后发送给别人,那么你可以使用像Diffie Hellman或者ECDH这样的密钥交换方法来建立一个共同的秘密。如果你只是想加密数据以便存储,那么你需要一个安全的随机数生成器。我觉得M2Crypto这个库好像没有提供这个功能。

不过,看起来M2Crypto是支持Diffie Hellman的。

4

M2Crypto这个库因为文档不够好而出名。

这是我从他们的测试案例中收集到的一些信息:

import os
from M2Crypto import EVP

k = EVP.Cipher(alg='aes_128_cbc', key=os.urandom(16), iv=os.urandom(16), op=enc)
20

AES-128的密钥长度是128位,也就是16个字节。

random_key = os.urandom(16)

这个长度对于大多数用途来说已经足够了。当你把这个随机值输入到M2(或者其他加密库)时,它会在内部被转换成一个“密钥调度”,这个调度实际上是用来进行加密的。

撰写回答