加密

加密

什么是加密

加密定义:以保证机密性的方式转换数据的过程。

为此,加密需要使用一个保密工具,称其为“密钥”。

加密密钥和任何其他加密密钥应具有一些属性:

  • 为了保护机密性,密钥的值应难以猜测。
  • 应该在单个上下文中使用它,避免在不同上下文中重复使用(类比 JS 作用域)。密钥重用会带来安全风险,如果规避了其机密性,则影响更大,因为它“解锁”了更敏感的数据。
加密分类
  • 对称加密
  • 非对称加密

对称加密

WX20191112-233405@2x

  • 用相同的密钥对原文进行加密和解密,通信双方共用一个密钥
  • 交易双方都使用同样钥匙,无法确保密钥被安全传递,安全性得不到保证
  • 算法公开、计算量小、加密速度快、加密效率高,适合于数据量比较大的加解密

非对称加密

WX20191112-233517@2x

  • 公开密钥与私有密钥是一对,如果用公共密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公共密钥才能解密
  • 算法强度复杂、安全性依赖于算法与密钥但是由于其算法复杂,而使得加密解密速度没有对称加密解密的速度快。
  • 安全性会比对称加密高

原理:

  1. 随机选取两个质数p和q
  2. 计算 n = pq
  3. 计算 φ(n) = (p-1)(q-1)
  4. 找一个与φ(n)互质的小奇数e,互质是指两个数的公约数只有1
  5. 对模φ(n),计算e的乘法逆元d,即找到一个d,使下列等式成立:(e*d) mod φ(n) = 1
  6. 得到公钥:(e, n),私钥: (d, n)
  7. 加密过程:c = (m^e) mod n, (c为加密后的密文,m为原文)
  8. 解密过程:m = (c^d) mod n

作者:蒋鹏飞
链接:https://juejin.im/post/5e689e336fb9a07c9e1c3903
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

混合加密

WX20191113-110514@2x

流程:

  1. 密钥对明文加密,公钥对密钥加密

  2. 传输加密后明文,和加密后的密钥

  3. 私钥解析出公钥加密后的密钥,密钥再解析加密后的明文

  • 使用了对称加密快的优点,以及非对称加密的安全性

哈希

哈希算法定义:一种只能加密,不能解密的密码学算法,可以将任意长度的信息转换成一段固定长度的字符串。

加密算法是可逆的(使用密钥),并且可以提供机密性(某些较新的加密算法也可以提供真实性),而哈希算法是不可逆的,并且可以提供完整性,以证明未修改特定数据。

  • 在强大的哈希算法中,如果有两个不同的输入,则几乎不可能获得相同的输出
  • 如果计算后的结果范围有限,就会存在不同的数据经过计算后得到的值相同,这就是哈希冲突

编码

编码定义:将数据从一种形式转换为另一种形式的过程,与加密无关

它不保证机密性,完整性和真实性这三种加密属性,因为:

  • 不涉及任何秘密且是完全可逆的。
  • 通常会输出与输入值成比例的数据量,并且始终是该输入的唯一值。
  • 编码方法被认为是公共的,普遍用于数据处理
  • 编码永远不适用于操作安全性相关
URL编码

又叫百分号编码,是统一资源定位(URL)编码方式。URL地址(常说网址)规定了:

  • 常用的数字,字母可以直接使用,另外一批作为特殊用户字符也可以直接用(/,:@等)
  • 剩下的其它所有字符必须通过%xx编码处理。

编码方法很简单,在该字节ascii码的 16 进制字符前面加%. 如 空格字符,ascii码是 32,对应 16 进制是’20’,那么urlencode编码结果是:%20

HTML实体编码

WX20191113-110209@2x

Base64/32/16编码

base64base32base16可以分别编码转化 8 位字节为 6 位、5 位、4 位。

16,32,64 分别表示用多少个字符来编码,

Base64常用于在通常处理文本数据的场合,表示、传输、存储一些二进制数据。包括MIMEemail,email via MIME,在XML中存储复杂数据。

编码原理:

  1. Base64编码要求把 3 个 8 位字节转化为 4 个 6 位的字节

  2. 之后在 6 位的前面补两个 0,形成 8 位一个字节的形式

  3. 6 位 2 进制能表示的最大数是 2 的 6 次方是 64,这也是为什么是 64 个字符的原因

    • A-Z,a-z,0-9,+,/这 64 个编码字符,=号不属于编码字符,而是填充字符

编码表:

WX20191113-110317@2x

参考

一文搞懂 Web 中暗藏的密码学

看完秒懂对称加密、非对称加密、数字签名

Base64原理