无法解密python文件中的文本
在my无法解密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)
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')