“methodwrapper”对象在AES CTR pycrypto库中不可读取

2024-04-23 07:35:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在python2中实现一个加密/解密函数。 这是加密方案: encryption scheme但是,我在pycrypto库的AES CTR函数中得到一个'method-wrapper' object is not iterable错误

这是stacktrace:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-5-1c44f21fcf83> in <module>()
     45         l = random.randint(16,48)
     46         m = random_bytes(l)
---> 47         assert specialDecryption(k, specialEncryption(k, m)) == m

<ipython-input-5-1c44f21fcf83> in specialEncryption(k, m)
      7     # compute PRF
      8     r = random_bytes(KEYLENGTH/8)
----> 9     prf = lengthQuadruplingPRF(k, r)
     10 
     11     # xor

<ipython-input-4-59fb6141461b> in lengthQuadruplingPRF(k, r)
     34     assert len(k) == KEYLENGTH/8
     35     assert len(r) <= KEYLENGTH/8
---> 36     obj = AES.new(k, AES.MODE_CTR, counter=make_counter())
     37     output = obj.encrypt(r*4)
     38     return output

/usr/local/lib/python2.7/site-packages/Crypto/Cipher/AES.pyc in new(key, mode, *args, **kwargs)
    204 
    205     kwargs["add_aes_modes"] = True
--> 206     return _create_cipher(sys.modules[__name__], key, mode, *args, **kwargs)
    207 
    208 

/usr/local/lib/python2.7/site-packages/Crypto/Cipher/__init__.pyc in _create_cipher(factory, key, mode, *args, **kwargs)
     77             raise TypeError("IV is not meaningful for the ECB mode")
     78 
---> 79     return modes[mode](factory, **kwargs)

/usr/local/lib/python2.7/site-packages/Crypto/Cipher/_mode_ctr.pyc in _create_ctr_cipher(factory, **kwargs)
    323     # 'counter' used to be a callable object, but now it is
    324     # just a dictionary for backward compatibility.
--> 325     _counter = dict(counter)
    326     try:
    327         counter_len = _counter.pop("counter_len")

TypeError: 'method-wrapper' object is not iterable

代码如下:

^{pr2}$

Tags: ininputlenobjectismodeipythoncounter
1条回答
网友
1楼 · 发布于 2024-04-23 07:35:08

您的counter应该是能够初始化dict的iterable,而不是绑定方法。在

我怀疑您将make_counter函数更改为:

return gen()

发件人:

^{pr2}$

足够修复它了。在

相关问题 更多 >