我想通过公钥加密秘密文本,并通过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中实现它?
答案 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 key和What is the best way to encode string by public-key in python。
答案 1 :(得分:3)
获得完全相同行为的最简单方法可能是使用pyOpenSSL - 它是OpenSSL本身的一个瘦的Python包装器。
答案 2 :(得分:1)
m2crypto模块将OpenSSL的大部分功能暴露给Python,包括公共/私有加密,解密和签名。
大多数Linux发行版都将m2crypto模块作为本机包提供。