Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.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文件中的文本_Python_File_Encryption_Aes - Fatal编程技术网

无法解密python文件中的文本

无法解密python文件中的文本,python,file,encryption,aes,Python,File,Encryption,Aes,在mytes1.enc中文本test1的加密版本。 但是,我无法解密。在那之前一切都很好 这部分 def DecryptMethod(txt_to_decrypt, key): #ct = txt_to_decrypt f = open(txt_to_decrypt,'rb') ct = f.read() cipher = AES.new(key, AES.MODE_CBC, iv) pt = unpad(cipher.decrypt(ct), 16)

在my
tes1.enc中
文本test1的加密版本。 但是,我无法解密。在那之前一切都很好 这部分

def DecryptMethod(txt_to_decrypt, key):
    #ct = txt_to_decrypt
    f = open(txt_to_decrypt,'rb')
    ct = f.read()
    cipher = AES.new(key, AES.MODE_CBC, iv)
    pt = unpad(cipher.decrypt(ct), 16)
    #decoded_txt = pt.decode()
    print(pt)
    return pt

testData = DecryptMethod("test1.enc",decrypted_key)
以上部分将不断显示错误:

TypeError:无法将对象类型传递给C代码
我已经检查过多次了,但这一部分不断地抛出这个错误


提前感谢。

明文和密文(输入/输出)只能是字节、bytearray或memoryview。在Python3中,不能传递字符串。在Python 2中,不能传递Unicode字符串

您可以将字符串转换为字节,如下所示:

TypeError: Object type <class 'str'> cannot be passed to C code

有关更多信息,请阅读这些

您要导入哪些库?“unpad”是在哪里定义的?unpad是从Crypto.Util定义的。Padding import unpadd打印出我的ct会给出这个结果b'/QM9kmEdUMg7GVjmlnUd2Q=='。我打印了ct的类型,它说它是字节,
cipher.decrypt(ct)
的返回值的类型是什么?如果不是字节,请尝试将其转换为字节tooct is in bytes,在我将密码更改为cipher=AES.new(key,AES.MODE_CBC,iv.encode(“utf-8”))后,出现了一个新的错误:在CBC模式下,数据必须填充到16字节边界。至于cipher.decrypt(ct),我无法获得它的类型,因为程序在到达pt=unpad(cipher.decrypt(ct.encode(),16)时将停止工作。对于模式CBC,
iv
必须是16字节长。我不知道你如何申报你的
iv
。这不是你共享的代码的一部分。至于类型,我建议您在继续使用unpad函数之前先执行类似于
dec\u ct=cipher.decrypt(ct)
的操作,然后再执行
print(type(dec\u ct))
的操作。在加密之前,我的数据是16字节,但在解密之后,数据是24字节。我是否可以将24字节转换为16字节?
TypeError: Object type <class 'str'> cannot be passed to C code
b = bytes(mystring, 'utf-8')