RSA的非对称特性用于数据传输很合适,这里生成了公钥给客户端,私钥放在服务器端用于解密传输过来的信息。
生成公钥私钥
openssl genrsa -out rsa_private_key.pem 1024
openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem
公钥给客户端,JS调用去加密,加密后的数据是乱码没有办法直接输出,因此需要base64进行编码
举例:
from M2Crypto import RSA
passwd= '123456'
rsa_pub = RSA.load_pub_key('/opt/zero/rsa/rsa_public_key.pem')
ctxt = rsa_pub.public_encrypt(passwd, RSA.pkcs1_padding)
ctxt64 = ctxt.encode('base64')
print ('密文:%s'% ctxt64)
服务端解密:
>>> rsa_pri = RSA.load_key('/opt/zero/rsa/rsa_private_key.pem')
>>> txt = rsa_pri.private_decrypt(ctxt64.decode('base64'), RSA.pkcs1_padding)
>>> print txt
123456
参考:
http://my.oschina.net/kuaikuai/blog/208075?fromerr=QzhKmDkW
关于BASE64可参考http://blog.youkuaiyun.com/Jacky_Dai/article/details/4698461