對明文進行Hash加密,獲得密文,可是密文不能解密爲明文。
例如:Md5 sha1等html
使用密鑰,對明文進行加密,獲得密文
使用密鑰,對密文進行解密,獲得明文
例如 AES算法
有密鑰和公鑰。
公鑰是全部人均可以看到的。
密鑰只有本身擁有。
使用公鑰,對明文進行加密,獲得密文。
使用密鑰,對密文進行解密,獲得明文。加密
例如RSAcode
安裝opensslhtm
yum install openssl生成私鑰blog
openssl genrsa -out private.pem 1024
- genrsa 表示使用rsa算法
生成公鑰ssl
openssl rsa -in private.pem -pubout -out public.pemget
1.公鑰加密,私鑰解密openssl
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有私鑰,才能解密。hash
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
這個用於生成數字簽名。也就是證實數據是私鑰擁有者發送的,並且未被修改。
例如
因爲全部人都有公鑰,全部人都能解密,因此若是這個方法不能用來加密數據。
未經容許,請不要轉發