有没有人知道使用Python库导入OpenSSL RSA私钥/公钥(使用密码)的最简单方法,并使用它来解密邮件。
我已经看了ezPyCrypto,但似乎无法识别OpenSSL RSA密钥,我尝试使用importKey导入密钥,如下所示:
key.importKey(myKey, passphrase='PASSPHRASE')
在我的例子中,myKey是一个以字符串形式表示的OpenSSL RSA公钥/私钥对。
这说:
未绑定方法importKey()必须首先使用密钥实例进行调用 参数(改为str实例)
API文档说:
importKey(self,keystring,** kwds)
有人可以建议我如何阅读使用ezPyCrypto的密钥吗?我也试过了:
key(key, passphrase='PASSPHRASE')
但是这可以说:
ezPyCrypto.CryptoKeyError:已尝试 导入无效密钥或密码 很糟糕
此处链接到文档:
http://www.freenet.org.nz/ezPyCrypto/detail/index.html
编辑:只是对此进行了更新。已成功导入RSA密钥,但由于eqPyCrypto不支持AES分组密码,因此解密时遇到实际问题。只是让人们知道。我成功地设法使用ncrypt(http://tachyon.in/ncrypt/)做我想做的事。由于SWIG和OpenSSL编译问题,我对M2Crypto有一些编译问题,尽管安装的版本超出了最低要求。看起来Python加密/解密框架目前还是一个雷区。哼哼,谢谢你的帮助。
答案 0 :(得分:6)
第一个错误告诉您需要在importKey
的实例上调用key
。
k = key()
k.importKey(myKey, passphrase='PASSPHRASE')
然而,文档似乎表明这是做你想做的更好的方式:
k = key(keyobj=myKey, passphrase='PASSPHRASE')
答案 1 :(得分:5)
目前尚不清楚您想要实现的目标,但您可以试试M2Crypto。从我的角度来看,它是适用于Python的最佳OpenSSL包装器。
以下是RSA加密/解密代码示例:
import M2Crypto as m2c
import textwrap
key = m2c.RSA.load_key('key.pem', lambda prompt: 'mypassword')
# encrypt something:
data = 'testing 123'
encrypted = key.public_encrypt(data, m2c.RSA.pkcs1_padding)
print "Encrypted data:"
print "\n".join(textwrap.wrap(' '.join(['%02x' % ord(b) for b in encrypted ])))
# and now decrypt it:
decrypted = key.private_decrypt(encrypted, m2c.RSA.pkcs1_padding)
print "Decrypted data:"
print decrypted
print data == decrypted