当前位置: 首页 > 知识库问答 >
问题:

pycrypto不复制用于AES的NIST测试向量(CFB模式)

欧阳衡
2023-03-14
from Crypto.Cipher import AES

#            1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16
key   = b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
iv    = b'\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
plain = b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'

aes = AES.new(key, AES.MODE_CFB, iv)
cipher = aes.encrypt(plain)

print(' '.join('{:2x}'.format(b) for b in cipher))
3a d7 8e 72 6c 1e c0 2b 7e bf e9 2b 23 d9 ec 34
3a 81 e1 d4 b8 24 75 61 46 31 63 4b 5c 79 d6 bc

有人知道如何用Pycrypto复制NIST测试向量吗?

这是NIST的例子

# CAVS 11.1
# Config info for aes_values
# AESVS VarTxt test data for CFB128
# State : Encrypt and Decrypt
# Key Length : 128
# Generated on Fri Apr 22 15:11:53 2011
...
COUNT = 0
KEY = 00000000000000000000000000000000
IV = 80000000000000000000000000000000
PLAINTEXT = 00000000000000000000000000000000
CIPHERTEXT = 3ad78e726c1ec02b7ebfe92b23d9ec34

共有1个答案

琴元凯
2023-03-14

aes.new(...)调用中缺少关键字参数segment_size。这是反馈大小,默认为8。如果代码行更改为

aes = AES.new(key, AES.MODE_CFB, iv, segment_size=128)

你得到正确的结果。

如文件所述:

 类似资料:
  • 问题内容: 我正在将go应用程序添加到已经存在的python代码库中。我在处理语言之间的加密时遇到了麻烦。这使用的是go 1.2.1和Python 2.7.x / PyCrypto 2.7a1。 这是Python示例: 这是Go示例: 这是golang链接,我找不到安装PyCrypto的Python pastebin。 正如标题和来源所建议的那样,两个代码段会产生不同的密文: Python:dbf

  • 作为一个自学练习,我正在尝试学习如何使用一些pycrypto库。我需要使用AES在CBC_模式下解密密文字符串。I密文、密钥和IV都已给出。以下是我编写的代码: 当我运行这个,我得到以下错误: ValueError:IV的长度必须为16字节 我知道IV字符串是32个十六进制字符,因此是16个字节。我认为这可能是一个打字问题,但我不知道如何纠正它。有人能帮忙吗? 非常感谢。

  • 问题内容: 我正在编写一段代码,以使用对称加密来加密文本。但这并没有带来正确的结果… 在这里,解密后的文本与原始文本不同。 我对密码学不是很了解,所以请多多包涵。我知道CTR模式每次都需要一个“计数器”功能来提供一个随机计数器,但是为什么当我的密钥是32字节并且它也坚持我的消息也是16字节的倍数时,为什么它需要是16字节?这正常吗? 我猜想它不会回到原始消息,因为计数器在加密和解密之间发生了变化。

  • 让AES密码文本解密有点困难。 在这个特定的场景中,我使用Crypto-JS在客户端加密数据,并使用PyCrypto在python服务器上解密数据。 加密。js: 解密。py: 我成功地重新计算了HMAC,但当我尝试然后解密密码时,我得到了一些似乎用密码加密的东西�'结果如何。 我在密码文本的输入长度方面遇到了错误,但当我切换到CFB模式时,修复了它,所以我认为这不是一个填充问题。

  • apvector还有一个构造函数,我们称之为复制构造函数。因为它使用一个apvector作为参数来创建一个新的向量,这个新的向量的类型与元素都和原来的向量相同。 apvector<int> copy (count); 虽然这个语句是合法的,但我们几乎从来不用它来创建apvector,因为还有一种更好的方式: apvector<int> copy = count; “=”操作符用在apvecto

  • 问题内容: 我今天刚找到pycrypto,并且一直在研究AES加密课程。不幸的是,它只能成功一半。self.h.md5以十六进制格式输出md5哈希,并且为32byte。这是输出。似乎是对消息进行了解密,但是它在解密后放置了随机字符,在这种情况下,是\ n \ n \ n …我认为self.data的块大小有问题,有人知道如何解决此问题吗? Jans-MacBook-Pro:test2 jan $