Cao Yi

加解密简述

Index

加密,对正常数据做些处理,让它不易被外人理解,达到保密的目的。没加密的数据叫明文,加密后的数据叫密文。 解密,就是把密文变成明文。

对称加密简介

对称加密是最古老的密码学方案,简单说,就是用加解密用可逆的方法。

例如,张三给李四发一条消息“我们的最低价是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

信息的处理和传递过程是:

  1. 张三用自己的私钥zPrivateKey对消息加密
  2. 李四收到消息后,用张三的公钥zPublicKey解密,并获取信息。

如果李四要将消息发给张三,过程也是类似的:

  1. 李四用自己的私钥lPrivateKey对消息加密
  2. 张三收到消息后,用李四的公钥zPublicKey解密,并获取信息。

非对称加密是数字签名的技术基础。