加密,对正常数据做些处理,让它不易被外人理解,达到保密的目的。没加密的数据叫明文,加密后的数据叫密文。 解密,就是把密文变成明文。
对称加密是最古老的密码学方案,简单说,就是用加解密用可逆的方法。
例如,张三给李四发一条消息“我们的最低价是1元”,为了不让商业对手了解,张三将这条消息用如下方式加密:每个字的UTF8编码+3。(相关JavaScript代码参这里)
“我们的最低价是1元”对应的UTF8是
[25105, 20204, 30340, 26368, 20302, 20215, 26159, 49, 20803]
给每个值都加上3得到新的数组
[25108, 20207, 30343, 26371, 20305, 20218, 26162, 52, 20806]
对应的汉字是消息是“戔仯皇會佑仺昲4兆”,即使被竞争对手截获了消息,也获取不了有用信息。张三在收到消息后,每个编码减3就能得到消息明文了。
对称加密虽然能用,但还是差点意思,比较容易破解,于是,后来诞生了非对称加密。
对称加密系统里,加解密都使用同一个密钥。非对称加密,加解密使用不同的密钥,收发信息双方,各自都有自己的一对密钥,公钥和私钥。为什么需要这么多密钥?因为在非对称密码系统里,加密和解密需要使用不同的密码。使用私钥加密,则使用公钥解密,反之亦然。为什么可以做到这点,需要更深入的密码学知识,将来可能会专门写一篇,这里暂时不谈。
密钥对里,私钥只有自己知道,不能公开给别人,公钥则需公开。在有的实现方案里,公钥可以由私钥计算出来。
同样的例子,张三给李四发一条消息“我们的最低价是1元”。假设他们的密钥分别是
Public Key | Private Key | |
---|---|---|
Zhang San | zPublicKey | zPrivateKey |
Li Si | lPublicKey | lPrivateKey |
信息的处理和传递过程是:
如果李四要将消息发给张三,过程也是类似的:
非对称加密是数字签名的技术基础。