使用OpenSSL生成密钥的Python RSA解密

Jon*_*Jon 4 python encryption openssl rsa

有谁知道用Python库导入OpenSSL RSA私钥/公钥(使用密码)并使用它来解密消息的最简单方法.

我看了一下ezPyCrypto,但似乎无法识别OpenSSL RSA密钥,我尝试使用importKey导入密钥,如下所示:

key.importKey(myKey, passphrase='PASSPHRASE')
Run Code Online (Sandbox Code Playgroud)

在我的例子中,myKey是一个以字符串形式表示的OpenSSL RSA公钥/私钥对.

这个有:

必须使用键实例作为第一个参数调用unbound方法importKey()(改为使用str实例)

API文档说:

importKey(self,keystring,**kwds)

有人可以建议我如何阅读使用ezPyCrypto的密钥吗?我也尝试过:

key(key, passphrase='PASSPHRASE')
Run Code Online (Sandbox Code Playgroud)

但是这个:

ezPyCrypto.CryptoKeyError:尝试导入无效密钥,或密码错误

链接到这里的文档:

http://www.freenet.org.nz/ezPyCrypto/detail/index.html

编辑:只是对此的更新.已成功导入RSA密钥,但由于eqPyCrypto不支持AES分组密码,因此解密时遇到实际问题.只是让人们知道.我成功地设法使用ncrypt(http://tachyon.in/ncrypt/)做我想做的事.尽管安装的版本超出了最低要求,由于SWIG和OpenSSL编译问题,我在M2Crypto中遇到了一些编译问题.看起来Python加密/解密框架目前还是一个雷区.哼哼,谢谢你的帮助.

eph*_*ent 6

第一个错误告诉你importKey需要在一个实例上调用key.

k = key()
k.importKey(myKey, passphrase='PASSPHRASE')
Run Code Online (Sandbox Code Playgroud)

但是,文档似乎表明这是一种更好的方式来做你想做的事情:

k = key(keyobj=myKey, passphrase='PASSPHRASE')
Run Code Online (Sandbox Code Playgroud)


abb*_*bot 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
Run Code Online (Sandbox Code Playgroud)