如何在python中为AES生成强大的一次会话密钥

时间:2011-02-15 07:35:01

标签: python m2crypto

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

3 个答案:

答案 0 :(得分:11)

AES- 128 128 位密钥= 16个字节。

random_key = os.urandom(16)

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

答案 1 :(得分:4)

M2Crypto因缺乏良好的文档而臭名昭着。

以下是我可以从their test cases收集的内容:

import os
from M2Crypto import EVP

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

答案 2 :(得分:0)

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

看起来M2Crypto确实支持Diffie Hellman。