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