我不熟悉python和pycrypto。 我正在尝试实现AES-CTR。为了检查我的程序是否正确加密,我尝试使用NIST SP 800-38A标准(第F.5节)中的测试序列。但我没有得到正确的结果。我做错什么了?在
from Crypto.Cipher import AES
from Crypto.Utils import Counter
CTRkey="2b7e151628aed2a6abf7158809cf4f3c"
ctr=Counter.new(128, initial_value=int("f0f1f2f3f4f5f6f7f8f9fafbfcfdfeff",16))
cipherCTR=AES.new(CTRkey, AES.MODE_CTR, counter=ctr)
print(cipherCTR.encrypt("f0f1f2f3f4f5f6f7f8f9fafbfcfdfeff".decode("hex")).encode("hex"))
结果:
^{pr2}$但预期结果(密文)是:
874d6191b620e3261bef6864990db6ce
我试过了。在
有结果了
^{pr2}$使用二进制数据为我工作,和结构编码不建议使用(“hex”)
在NIST SP 800-38A标准(第F.5.1节)中,CTR-AES128加密操作的输入称为明文而不是输入块。在
如果您使用明文(
6bc1bee22e409f96e93d7e117393172a
),您将得到正确的结果,密文874d6191b620e3261bef6864990db6ce
。在相关问题 更多 >
编程相关推荐