首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AES-GCM密码-现在对IV

AES-GCM密码-现在对IV
EN

Cryptography用户
提问于 2019-06-10 22:27:52
回答 1查看 5K关注 0票数 2

我使用的是一个名为PyCryptodome的Python库,它为AES-GCM密码提供了以下API:

https://pycryptodome.readthedocs.io/en/latest/src/cipher/aes.html

如您所见,IV不适用于GCM密码器。

有一些C++库期望用户指定IV,而不是现在。

假设我得到了一条使用16位IV的C++库加密的消息,稍后,我想使用Python来解码这条消息。既然我知道所使用的密钥和IV,那么当我指定现在为IV时,我能正确地解密这个消息吗?

EN

回答 1

Cryptography用户

回答已采纳

发布于 2019-06-10 23:30:36

用于AES-GCM的参数的术语必须是唯一的,从一条消息到另一条消息,对于任何一个键来说,这个术语有时被称为‘nonce’,有时被称为‘IV’。

  • AES-GCM安全合同只要求永远不要重复这一点,因此将其称为“nonce”是合适的,即使用一次的数字。
  • 相反,对于AES-CBC来说,128位字符串的参数必须预先不可预测,并且通常被称为初始化向量。

这是PyCryptodome在区分“现在”和“IV”时得到的区别--尽管它对AES-CFB和AES-OFB说的是“IV”,而实际上它们只是使用了一个“just”。然而,在其他一些API中,相应的参数总是被称为IV。为了有信心,您应该使用两个不同的库来起草一些代码--比如您心目中的C++库之一--并确保它们可以互操作,并包括具有固定键、非cases和消息的已知答案测试,作为代码中的测试用例。

注意: AES-GCM最好使用96位(12字节)作为消息序列号的顺序选择。如果您使用一个128位(16字节)的名(正如PyCryptodome文档错误地建议的那样),就好像您随机地选择了一个96位的nonce,这意味着,由于有发生当前冲突的危险,在消息数量上的限制要比按顺序选择96位nonce的限制小得多。

票数 7
EN
页面原文内容由Cryptography提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://crypto.stackexchange.com/questions/71216

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档