8

我正在使用 M2Crypto 的 AES 加密消息,但对如何生成强随机会话密钥和长度感到困惑。M2Crypto 是否提供任何生成随机密钥的功能。

4

3 回答 3

16

AES- 128128位密钥 = 16 字节。

random_key = os.urandom(16)

对于大多数用途来说应该足够了。当您将此随机值提供给 M2(或任何加密库)时,它会在内部转换为实际用于加密的“密钥计划”。

于 2011-02-15T08:55:29.790 回答
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)
于 2011-02-15T10:38:00.943 回答
0

如果您正在加密以发送给另一方,那么您想要执行 Diffie Hellman 或 ECDH 密钥交换之类的操作来建立共享密钥。如果您只想加密存储,那么您需要一个安全的随机数生成器。我不相信 M2Crypto 提供这个?

看起来 M2Crypto 确实支持 Diffie Hellman。

于 2011-02-15T09:50:17.887 回答