对明文进行Hash加密,得到密文,但是密文不能解密为明文。
例如:Md5 sha1等
使用密钥,对明文进行加密,得到密文
使用密钥,对密文进行解密,得到明文
例如 AES
有密钥和公钥。
公钥是所有人都可以看到的。
密钥只有自己拥有。
使用公钥,对明文进行加密,得到密文。
使用密钥,对密文进行解密,得到明文。
例如RSA
安装openssl
yum install openssl生成私钥
openssl genrsa -out private.pem 1024
- genrsa 表示使用rsa算法
生成公钥
openssl rsa -in private.pem -pubout -out public.pem
1.公钥加密,私钥解密
from M2Crypto import RSA
msg = 'aaaa-aaaa'
rsa_pub = RSA.load_pub_key('public.pem')
rsa_pri = RSA.load_key('private.pem')
print '公钥加密'
en_msg=rsa_pub.public_encrypt(msg,RSA.pkcs1_padding)
en_msg64=en_msg.encode('base64')
print '密文base64',en_msg64
print '私钥解密'
de_msg=rsa_pri.private_decrypt(en_msg,RSA.pkcs1_padding)
print '明文',de_msg
这个用于加密传输的数据。例如A用公钥加密信息,传送给B,只要B有私钥,才能解密。
2.私钥加密,公钥解密
print '###################################'
print '私钥加密'
en_msg=rsa_pri.private_encrypt(msg, RSA.pkcs1_padding)
en_msg64=en_msg.encode('base64')
print '密文base64',en_msg64
print '公钥解密'
de_msg=rsa_pub.public_decrypt(en_msg,RSA.pkcs1_padding)
print '明文',de_msg
这个用于生成数字签名。也就是证明数据是私钥拥有者发送的,而且未被修改。
例如
由于所有人都有公钥,所有人都能解密,所以如果这个方法不能用来加密数据。
未经允许,请不要转发
原文:https://www.cnblogs.com/Xjng/p/11530927.html