我可以解密通过openssl命令行工具加密的某些数据,但是某些“额外”数据将与原始数据一起返回。
我创建了这样的加密文件:

$ echo这就是它> file.txt

$ openssl rsautl -encrypt -pubin -inkey public.pem -in file.txt -out crypto.txt

我可以使用以下方法访问原始数据:

from Crypto.PublicKey import RSA
key = open('/tmp/.private.key').read()
rsakey = RSA.importKey(key, 'MyPassphrase')
data = open('/tmp/encrypted.txt', 'rb').read()
original = rsakey.decrypt(data)


但是返回了一些额外的数据,并且输出是这样的:


  \ x02h \ x83 \ xcfx \ x84,\ xb1 \ xa6 [...] \ xcf5 \ x9f \ xbbG \ xf1 \ x14 \ xd0 \ x8d \ x1f \ xfe \ x9c4 \ xbb \ x1aB \ xfa \ xc3b \ xc2 \ xe0K \ x85 \ xb5 \ x10y \ xe1 \ x8e \ x00这是这个\ n


我可以避免在解密数据之前接收此原始数据吗?

观察:密钥是使用openssl工具创建的

Tks。

最佳答案

您将获得PKCS#1 v1.5填充的纯文本。您需要先删除PKCS#1 v1.5填充。当前,您正在执行教科书(或“原始”)RSA解密,这仅仅是模块化的幂运算。尝试使用支持PKCS#1 v1.5的类,例如this one

10-08 08:15
查看更多