非对称加密 asymmetric cryptography

对称加密

对称加密非常好理解, 原始数据, 比如

明文 : "国家机密, 为啥告你"

和 秘钥 : "19940415"

传入 加密函数 : function(明文, 秘钥) => 密文

获取到密文 : "9o@da13#[>d82nc"

然后解密方, 用同样的秘钥和解密函数去解密得出明文

简单易懂, 但头疼的是如何保存好秘钥和传递秘钥 !!!

对称加密 : 明文 <-> 秘钥🔑 <-> 密文

常见三种对称加密算法 :

  • DES

  • 3DES

  • AES

非对称加密

非对称加密 :

  • 一对秘钥, 公钥和私钥
  • 公钥加密的信息, 私钥才能解密
  • 私钥加密的信息, 公钥才能解密

怎么算公钥和私钥呢 ?

可以公开给任何人的就是公钥, 只有自己保留的就是私钥, 无所谓其中包含的数据是什么, (事实上, 私钥里已经包含了公钥的信息)

所以只需要保存好私钥, 如果私钥丢了, 其它人就可以冒充成为 "你" 了 !

常见非对称加密算法 : RSA

常见应用

首先需要有一对公私钥 ~

认证 : SSH 登录, 数字签名

解决了如何证明你是你自己的问题 !

  1. 然后广而告之, 将公钥公示出来, 或者提供给需要校验的一方
  2. 需要证明我是我的情况下, 将一串明文数据加密, 然后让验证者拿我的公钥去解密
  3. 解密成功, 说明这对公私钥匹配, 而我又是唯一拥有这个私钥的人
  4. 即证明了我就是我 !!!

加密 : HTTPS, 传输数据

解决了如何传输加密数据, 让截获数据的人看不到数据内容

  1. 发送数据的一方, 使用接收数据一方的公钥, 去加密明文数据
  2. 接收数据的一方, 使用自己的私钥去解密加密好的数据
  3. 因为公钥加密的数据只有相对应的私钥才能解密, 所以, 加密好的数据在传输过程中, 即使被截获或者侦听, 也没有办法解得明文数据

其它代表性的应用

如何破解 : 中间人攻击

非对称加密看起来牢不可破, 但其实 MITM 就是专门破解非对称加密的一种方式

charles是如何抓取https数据包的

我们可以使用 Charles 来截取别人的 HTTPS 请求, 分析其它 App 的请求数据等

Node.js 加密库 : crypto-js

白话解释 对称加密算法 VS 非对称加密算法

Github SSH 生成秘钥对