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

发布于 2024-10-17 13:54:59 字数 78 浏览 5 评论 0原文

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

I am using M2Crypto's AES for encrypting message, but confused about how to generate a strong random session key and of what length. Does M2Crypto provide any function for generation random key.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

德意的啸 2024-10-24 13:54:59

AES-128 具有 128 位密钥 = 16 字节。

random_key = os.urandom(16)

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

AES-128 has 128 bit key = 16 bytes.

random_key = os.urandom(16)

should be sufficient for most uses. When you feed this random value to M2 (or whatever crypto library), it is transformed internally into a "key schedule" actually used for encryption.

分分钟 2024-10-24 13:54:59

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

以下是我从他们的测试用例中收集到的内容:

import os
from M2Crypto import EVP

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

M2Crypto is notorious for lack of good documentation.

Here is what I could gather from 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)
随心而道 2024-10-24 13:54:59

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

看来 M2Crypto 确实支持 Diffie Hellman。

If you are encrypting to send to another party then you want to do something like Diffie Hellman or ECDH key exchange to establish a shared secret. If you just want to encrypt for storage, then you need a secure random number generator. I do not believe M2Crypto provides this?

It looks like M2Crypto does support Diffie Hellman.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文