4

有谁知道使用 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 加密/解密框架有点像雷区。呵呵,谢谢你的帮助。

4

2 回答 2

6

第一个错误是告诉importKey需要在.key

k = key()
k.importKey(myKey, passphrase='PASSPHRASE')

但是,文档似乎表明这是做你想做的更好的方法:

k = key(keyobj=myKey, passphrase='PASSPHRASE')
于 2009-07-16T19:18:07.063 回答
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
于 2009-07-16T19:33:14.100 回答