Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python M2Crypto'存在问题;s AES_Python_M2crypto - Fatal编程技术网

Python M2Crypto'存在问题;s AES

Python M2Crypto'存在问题;s AES,python,m2crypto,Python,M2crypto,有人能指出这段代码中的错误吗 __author__="gaurav" __date__ ="$15 Feb, 2011 5:10:59 PM$" import M2Crypto from base64 import b64encode, b64decode ENC=1 DEC=0 def AES_build_cipher(key, iv, op=ENC): ""

有人能指出这段代码中的错误吗

        __author__="gaurav"
        __date__ ="$15 Feb, 2011 5:10:59 PM$"
        import M2Crypto
        from base64 import b64encode, b64decode
        ENC=1
        DEC=0
        def AES_build_cipher(key, iv, op=ENC):
            """"""""
            return M2Crypto.EVP.Cipher(alg='aes_128_cbc', key=key, iv=iv, op=op)

        def AES_encryptor(key,msg, iv=None):
            """"""
            #Decode the key and iv
            key = b64decode(key)
            if iv is None:
                iv = '\0' * 16
            else:
                iv = b64decode(iv)

           # Return the encryption function
            def encrypt(data):
                cipher = AES_build_cipher(key, iv, ENC)
                v = cipher.update(data)
                v = v + cipher.final()
                del cipher
                v = b64encode(v)
                return v
            print "AES encryption successful\n"
            return encrypt(msg)
        def AES_decryptor(key,msg, iv=None):
            """"""
            #Decode the key and iv
            key = b64decode(key)
            if iv is None:
                iv = '\0' * 16
            else:
                iv = b64decode(iv)

           # Return the decryption function
            def decrypt(data):
                data = b64decode(data)
                cipher = AES_build_cipher(key, iv, DEC)
                v = cipher.update(data)
                v = v + cipher.final()
                del cipher
                return v
            print "AES dencryption successful\n"
            return decrypt(msg)
        if __name__ == "__main__":
            msg=AES_encryptor(b64encode("123452345"),msg=b64encode("qwrtttrtyutyyyyy"))
            print AES_decryptor(b64encode("123452345"),msg=msg)
错误:

        AES encryption successful

        AES dencryption successful

        Traceback (most recent call last):
          File "/home/gaurav/NetBeansProjects/temp/src/temp.py", line 54, in <module>
            print AES_decryptor(b64encode("123452345"),msg)
          File "/home/gaurav/NetBeansProjects/temp/src/temp.py", line 51, in AES_decryptor
            return decrypt(iv)
          File "/home/gaurav/NetBeansProjects/temp/src/temp.py", line 47, in decrypt
            v = v + cipher.final()
          File "/usr/local/lib/python2.6/dist-packages/M2Crypto-0.21.1-py2.6-linux-i686.egg/M2Crypto/EVP.py", line 128, in final
            return m2.cipher_final(self.ctx)
        M2Crypto.EVP.EVPError: wrong final block length
AES加密成功
AES加密成功
回溯(最近一次呼叫最后一次):
文件“/home/gaurav/NetBeansProjects/temp/src/temp.py”,第54行,在
打印AES_解密程序(b64encode(“123452345”),msg)
文件“/home/gaurav/NetBeansProjects/temp/src/temp.py”,第51行,在AES_解密程序中
返回解密(四)
文件“/home/gaurav/NetBeansProjects/temp/src/temp.py”,第47行,解密
v=v+cipher.final()
文件“/usr/local/lib/python2.6/dist packages/M2Crypto-0.21.1-py2.6-linux-i686.egg/M2Crypto/EVP.py”,第128行,最终版本
返回m2.cipher_final(self.ctx)
M2Crypto.EVP.evperor:错误的最终块长度

在更正缩进和
\uuuu main\uuuu
中的一个小更改后,您的代码似乎可以与
Python 2.7.3
M2Crypto-0.21.1
一起工作:

__author__="gaurav"
__date__ ="$15 Feb, 2011 5:10:59 PM$"
import M2Crypto
from base64 import b64encode, b64decode
ENC=1
DEC=0
def AES_build_cipher(key, iv, op=ENC):
   """"""""
   return M2Crypto.EVP.Cipher(alg='aes_128_cbc', key=key, iv=iv, op=op)

def AES_encryptor(key,msg, iv=None):
   """"""
   #Decode the key and iv
   key = b64decode(key)
   if iv is None:
       iv = '\0' * 16
   else:
       iv = b64decode(iv)

  # Return the encryption function
   def encrypt(data):
       cipher = AES_build_cipher(key, iv, ENC)
       v = cipher.update(data)
       v = v + cipher.final()
       del cipher
       v = b64encode(v)
       return v
   print "AES encryption successful\n"
   return encrypt(msg)

def AES_decryptor(key,msg, iv=None):
   """"""
   #Decode the key and iv
   key = b64decode(key)
   if iv is None:
       iv = '\0' * 16
   else:
       iv = b64decode(iv)

  # Return the decryption function
   def decrypt(data):
       data = b64decode(data)
       cipher = AES_build_cipher(key, iv, DEC)
       v = cipher.update(data)
       v = v + cipher.final()
       del cipher
       return v
   print "AES decryption successful\n"
   return decrypt(msg)

if __name__ == "__main__":
   key="123452345"
   msg="qwrtttrtyutyyyyy"
   encrypted_msg=AES_encryptor(b64encode(key),b64encode(msg))
   print b64decode(AES_decryptor(b64encode(key),encrypted_msg))

您的设置有问题。我运行了你的代码,没有任何错误。