关于对称加密、非对称加密、签名算法的理解 home 编辑时间 2019/11/25 ![](/api/file/getImage?fileId=5ddb521a16199b0467003c06) ## 前言 本文全部内容基于以下B站视频的理解 https://www.bilibili.com/video/av38845557 内容主要包括`对称加密` `非对称加密` `签名算法` 的原理和组合搭配的用法 ## 需求 由A端 向 C端 发送数据,中间必定经过B端, 例如 A ===> B ===> C, 必须满足以下要求 在B能看得到所有数据的前提下, 也不可能出现以下三种情况 1. B模仿A 向C发送的信息 2. B知道A 向C发送的信息的内容 3. B修改A 向C发送的信息的内容 ## 对称加密 ### 原理 写信人 abcd 向后推3位 写为 ===> defg 收信人 向前反推3位 解密原文 其中这个加密的秘钥称为PSK ### 方案 成熟的对称加密有 DES AES 其中 AES 更为安全 ### 流程 A端 ===> 原文 ===> PSK加密 ===> 密文 ===> B端 ===> PSK解密 ===> C端 ### 缺点 必须事先在A C两端都提前知晓PSK 而且没有泄露风险,否则一旦B知道PSK则前功尽弃 ## 非对称加密 ### 定义 秘钥PSK中的一部分公开 一部分隐藏 公开部分为公钥 隐藏部分为私钥 公钥加密 只有私钥可以解开 私钥加密 只有公钥可以解开 例如 - 原文 ===> 公钥加密 ===> 密文 === > 私钥解密 ===> 原文 - 原文 ===> 私钥加密 ===> 密文 === > 公钥解密 ===> 原文 ### 流程 #### 例子1 1. A先向C请求 C的公钥 2. 再用C的公钥加密数据,发送给C 3. C解密获得原文 缺点: 中间人B也得到了C的公钥,即B可以使用相同的公钥去模拟A向C发送和请求数据 #### 例子2 1. A同时发送自己的公钥 + 私钥加密后的信息 给C 2. C用[A的公钥]解密[A的信息] 缺点: 中间人也可以看得懂所有通信内容 ## 同时使用对称和非对称 ### 流程 1. A先向C请求 C的公钥 2. 再用C的公钥,加密一个对称加密的PSK,发送给C 3. C解密获得PSK 4. 后续操作全部基于这个PSK 优点: - 对称加密的PSK是随机生成的,无法通过反编译等手段获取 - 公私钥只用一次,中间人手里的公钥,既不能解密数据,在完成流程之后,公钥失效。 缺点: 1. 中间人可以监听到C的公钥,然后抢先发送PSK,模拟A 2. 中间人从一开始就模拟A获取私钥,发送PSK,模拟A 综上所述,该方法,只要确认A肯定是A,就解决所有问题 ## CA数字证书 加入一个所有人都信任的第三方 送人玫瑰,手留余香 赞赏 Wechat Pay Alipay 定期备份 Docker 中运行的 mysql、mongo、redis 的数据到宿主机 区块链入门 HyperLeger Fabric开发