我可以解密通过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