当前位置: 首页 > article >正文

《深入浅出HTTPS》读书笔记(17):公开密钥算法

公开密钥算法(Public Key Cryptography),也称为非对称加密算法(Asymmetrical Cryptography)。

公开密钥算法的功能比较多,可以进行加密解密、密钥协商、数字签名。

【密钥是一对】

公开密钥算法的密钥是一对,分别是公钥(public key)和私钥(private key),一般私钥由密钥对的生成方(比如服务器端)持有,避免泄露。

【运算速度很慢】

公开密钥算法尤其是RSA算法运算非常缓慢,一般情况下,需要加密的明文数据都非常大,如果使用公开密钥算法进行加密,运算性能会惨不忍睹。

公开密钥算法最重要和最广泛使用的算法就是RSA算法。

【RSA】

该算法是Ron Rivest、Adi Shamir、Leonard Adleman三个人创建的,以三个人名字的首字母命名。

1)密钥文件生成过程

◎选取两个很大的质数p和q。
◎求这两个数的乘积n

◎取一个公开指数e,这个数的值小于(p-1)(q-1), e对应的值和(p-1)(q-1)的值互质。
◎e和n组合起来就相当于公钥。
◎通过e、p、q能够计算出私钥d, d和n组合起来就是私钥。
e和d之间存在互逆的关系。

2)加密过程

RSA算法假如应用于加密,一般使用公钥加密,私钥解密

对明文M进行多次幂运算,运算的次数就是公钥,计算出值后再进行模运算(mod n),最终得到的C就是密文。

3) 解密过程

对密文进行d次的幂运算,然后进行模运算,最终得到明文M。

至于加密和解密如何互逆,依赖于算法和密钥对,过程如下:
◎C^d的过程相当于(M^e)^d。
◎(M^e)^d相当于M ^(e*d)。
◎(e*d) mod n等于1。
◎C^d (mod n)最终就能反解出M。


http://www.kler.cn/a/429657.html

相关文章:

  • R语言的数据库编程
  • 如何独立SDK模块到源码目录?
  • 《AI赋能鸿蒙Next,开启智能关卡设计新时代》
  • 浅谈云计算06 | 云管理系统架构
  • MySQL批量修改数据表编码及字符集为utf8mb4
  • spring cloud的核心模块有哪些
  • 【C++算法】34.位运算_丢失的数字
  • 三维测量与建模笔记 - 6.1 双目立体视觉系统
  • 监控组态软件的构成与功能
  • Windows11设置windows暂停更新100年
  • 大文件分块上传后端服务器
  • C++实现一个经典计算器(逆波兰算法)附源码
  • Vue的生命周期方法有哪些?一般在哪一步发送请求
  • JavaWeb:HTMLCSS
  • 手机租赁平台开发的机会与挑战分析
  • win11 恢复任务栏copilot图标, 亲测有效
  • 数据分析Python转置文档代码
  • 分布式搜索引擎Elasticsearch(三)
  • 告别充电焦虑:移动充电机器人的革命性解决方案
  • 3D 目标检测:从萌芽到前沿的技术演进之路
  • linux间隔记录服务器的CPU占用率TOP10的进程
  • 使用Nexus3搭建Maven私有镜像仓库
  • Burp(8)-验证码爆破插件
  • 基于FPGA的PI环调节电压
  • Xcode编译的时候运行python脚本
  • 计算机网络——三大交换技术