| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> RSA非对称加密 -> 正文阅读 |
|
[网络协议]RSA非对称加密 |
一、背景要对接实时翻译的平台,而对方提供的加密方式就是RSA(非对称加密),以往都是php对接,所以也没有深度研究过该加密方式,趁此次机会,学习一下 二、概述非对称加密就是加密和解密使用的不是相同的密钥:只有同一个公钥-私钥对才能正常加解密。 比如,如果A要加密一个文件发送给B,他应该先向B索要公钥,然后用B给他的公钥加密,把加密文件发送给B,此文件只能由B的私钥解开。因为B的私钥在他自己手机,所以,除了B,没有任何人能解开此加密文件。 非对称加密的典型算法就是RSA算法,它是由Ron Rivest,Adi Shamir,Leonard Adleman这三个哥们一起发明的,所以用他们仨的姓的首字母缩写表示。 优点: 非对称加密相比对称加密的显著优点在于,对称加密需要协商密钥,而非对称加密可以安全地公开各自的公钥,在N个人之间通信的时候,使用废对称加密只需要N各密钥对,每个人只管理自己的密钥对。而使用对称加密需要N*(N-1)/2个密钥,因此每个人需要管理N-1个密钥,密钥管理难度大,且非常容易泄露。 缺点: 非对称加密的缺点就是运算速度非常慢,比对称加密要慢得多。 所以在实际应用中,两者总是一起使用。假设A要给B传输加密文件,他俩首先交换了各自的公钥,然后:
可见非对称加密实际上应用在第一步,即加密‘AES口令’,这也是浏览器中常用的https协议的做法,即浏览器和服务器先通过RSA交换AES口令,接下来双方通信实际上采用的是速度较快的AES对称加密,而非缓慢的RSA非对称加密。 知识点: RSA算法,它的密钥有256/512/1024/2048/4096等不同的长度。长度越长,密码强度越大,当然计算速度也越慢。使用512bit的RSA加密时,明文长度不能超过53字节,使用1024bit的RSA加密时,明文长度不能超过117字节,这也是为什么使用RSA的时候,总是配合AES一起使用,即用AES加密任意长度的明文,用RSA加密AES口令。只使用非对称加密算法不能防止中间人攻击。 三、RSA PKCS公钥加密标准RSA PCKS(Public-Key Cryptography Standards Series 公钥加密标准系列),为了定义 RSA 加密的标准系列,IETF 组织总共定义了 15 个子系列标准,分别用在定义标准格式、如何封装、公钥加密封装标准、私钥加密封装标准、网络传输序列化标准等等… 具体可以参考 wikipedia PCKS 的解释: https://en.wikipedia.org/wiki/PKCS; 除此以外,还有 四、密钥格式
公钥PEM格式:
私钥PEM文件格式:
公钥PEM格式:
私钥PEM文件格式:
知识点: PEM和DER都是指文件的格式;其中DER是密钥的二进制表述格式,PEM是对DER编码转码为Base64字符的格式,通过解码还是能还原为DER格式的。 五、填充模式跟DES、AES一样,RSA也是一个块加密算法,即总是在一个固定长度的块上进行操作,但是跟AES不同的是,block length跟key length以及所使用的填充模式有关。
六、实战代码示例
前人栽树,后人乘凉 |
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 5:27:43- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |