非对称加密以及在Python的使用

来源:互联网 发布:linux wlan0 切换essid 编辑:程序博客网 时间:2024/05/18 01:11

加密技术分为两类:

对称加密 如 AES非对称加密 如 RSA

关于加密的文章我以后会专门写一篇文章,现在让我们简单的看看RSA的基本概念及在Python中如何使用。

概念

A 和 B 要把他们的通信内容加密, 如果A/B使用相同的加密解密key,那这就是 对称加密。

对称加密最大的问题就是A和B之间的加密/解密key必须是唯一的。也就是如果A和C 要加密通信,同时还不想让C知道A/B之间的通信内容。那么A/C之间的加密/解密用的key就不能和A/B之间的一样。

链接一旦便多,这种机制将很难管理大量的key。

非对称加密 就是在此环境下诞生的。非对称加密有公钥和私钥。公钥随意公开,私钥自己私密保存。

比如 A 把公钥发给B, C。 当B,C与A通信时,先把约定好的见面信号用公钥加密,A收到后,用私钥解密,当解密后的数据就是提前约定好的见面信号的话,A 就认为B,C是受信链接。

如果此时D也给A发送信息,但却没有正确的公钥。A就无法得到正确的见面信号,就不会受理D的请求。

如何使用

下面看看在Python中如何使用

使用 pycrypto 这个库。此库内置了大量的加密算法

首先用openssl生成 rsa 公钥和私钥

openssl genrsa -out mykey.pemopenssl rsa -in mykey.pem -pubout > mykey.pub

直接看python代码。后续再来修改此文章

from Crypto.PublicKey import RSAtext = "My test!"# 公钥加密pub_key = RSA.importKey(open('mykey.pub'))x = pub_key.encrypt(text)pri_key = RSA.importKey(open('mykey.pem'))decrypted_text = pri_key.decrypt(x[0])decrypted_text == text  # True
原创粉丝点击