如何在Python中实现OpenSSL功能?

时间:2011-10-06 01:48:34

标签: python openssl public-key-encryption private-key

我想通过公钥加密秘密文本,并通过Python中的私钥解密。 我可以使用openssl命令实现这一点:

echo "secrettext/2011/09/14 22:57:23" | openssl rsautl -encrypt -pubin -inkey public.pem | base64  data.cry
base64 -D data.cry | openssl rsautl -decrypt -inkey private.pem

如何在Python中实现它?

3 个答案:

答案 0 :(得分:20)

加密

#!/usr/bin/env python
import fileinput
from M2Crypto import RSA

rsa = RSA.load_pub_key("public.pem")
ctxt = rsa.public_encrypt(fileinput.input().read(), RSA.pkcs1_oaep_padding)
print ctxt.encode('base64')

解密

#!/usr/bin/env python
import fileinput
from M2Crypto import RSA

priv = RSA.load_key("private.pem")
ctxt = fileinput.input().read().decode('base64')
print priv.private_decrypt(ctxt, RSA.pkcs1_oaep_padding)

依赖关系:

另请参阅How to encrypt a string using the keyWhat is the best way to encode string by public-key in python

答案 1 :(得分:3)

获得完全相同行为的最简单方法可能是使用pyOpenSSL - 它是OpenSSL本身的一个瘦的Python包装器。

答案 2 :(得分:1)

m2crypto模块将OpenSSL的大部分功能暴露给Python,包括公共/私有加密,解密和签名。

大多数Linux发行版都将m2crypto模块作为本机包提供。