一、引言
网络上充满了窃听,我们的信息很容易被不怀好意的人获得,给我们造成不好的影响。如果你需要在网络上传输机密或者敏感的隐私信息,为了防备别有用心的人窃听,可能需要加密。而使用在线或者手机上的加密软件,可能不良软件更是泄露信息的温床。所以作为程序员的我们,完全可以自己来实现一个加密系统。
本文用 20 行 Python 代码来演示加密、解密、签名、验证的功能。大家依样画葫芦,不仅能理解加密技术,更能自己实现一套加密通信机制。
加密、解密建立在较高深的数学理论之上,不建议大家自己实现加密算法,直接调用相应库即可。
二、加密技术
加密技术我们这里演示两种,分别是对称加密和非对称加密。
讲解加密技术之前,我们需要假设下我们的使用场景,也是密码学常见的设定。
Alice Bob是通信双方
Eve是一个窃听者
传递的消息是PlainText
加密使用的秘钥key
加密后的密文是secret message
三、普通锁:简单的对称加密
对称加密:加密和解密双方使用同一个秘钥。比如这里, key='1234567887654321'.encode('utf-8')
,这个 key 是 Alice 和 Bob 共同的密钥。当 Alice 发消息时,他需要如下操作完成加密。
from Crypto.Cipher import AES
cryptor = AES.new(key, AES.MODE_ECB)
secret = cryptor.encrypt(plain.encode('utf-8'))
secret = b64encode(secret)
第一行 导入了AES算法。AES 是对称加密的一种算法</