【密码学基础】RSA加密算法

news2024/11/24 14:33:17

1 RSA介绍

  • RSA是一种非对称加密算法,即加密和解密时用到的密钥不同。
  • 加密密钥是公钥,可以公开;解密密钥是私钥,必须保密保存。
  • 基于一个简单的数论事实:两个大质数相乘很容易,但想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥,即公钥;而两个大质数组合成私钥。

2 密钥对的生成

step 1 生成N(公钥和私钥的一部分)

首先选取两个互为质数的数 p p p q q q p ≠ q , g c d ( p , q ) = 1 p\neq q, gcd(p, q)=1 p=q,gcd(p,q)=1),于是:
N = p ∗ q N = p * q N=pq

step 2 生成L

根据欧拉函数,不大于 N N N且与 N N N互质的数是 p − 1 p-1 p1 q − 1 q-1 q1两个数的最小公倍数:

L = [ p − 1 , q − 1 ] = ( p − 1 ) ( q − 1 ) L = [p-1, q-1] = (p-1)(q-1) L=[p1,q1]=(p1)(q1)

互质数 p p p q q q不能太小,如果他们足够大,那么根据目前的计算机技术和其他工具,至今也没能从 N N N分解出 p p p q q q。也就是说,只要密钥长度 N N N足够大(1024足够),基本上不可能从公钥信息推出私钥信息。

step 3 生成E(加密密钥)

满足如下两个条件:

1 < E < L 1 < E < L 1<E<L

g c d ( E , L ) = 1 gcd(E, L) = 1 gcd(E,L)=1

g c d ( E , L ) = 1 gcd(E, L) = 1 gcd(E,L)=1保证 E E E L L L最大公因数为1(互质),因此保证step 4生成解密密钥 D D D时,一定存在 D D D满足条件。

step 4 生成D(解密密钥)

满足如下两个条件:

1 < D < L 1 < D < L 1<D<L

( E ∗ D ) m o d L = 1 (E * D) mod L = 1 (ED)modL1

3 加密解密过程

在这里插入图片描述

另外,密钥对为: ( E , D , N ) (E, D, N) (E,D,N)

4 计算示例

明文信息为 p l a i n t e x t = 85 , E = 7 , p = 11 , q = 13. plaintext=85,E=7,p=11,q=13. plaintext=85E=7p=11q=13.
生成密钥对
step 1: N = p ∗ q = 11 ∗ 13 = 143 N=p*q=11*13=143 N=pq=1113=143
step 2: L = ( p − 1 ) ( q − 1 ) = 10 ∗ 12 = 120 L=(p-1)(q-1)=10*12=120 L=(p1)(q1)=1012=120
step 3: ( E ∗ D ) m o d L = 1 ⇒ ( 7 ∗ D ) m o d 120 = 1 ⇒ D = 103 (E*D)modL=1 \Rightarrow (7*D)mod120=1 \Rightarrow D=103 (ED)modL=1(7D)mod120=1D=103

加密
c y p h e r t e x t = p l a i n t e x t E m o d N = 8 5 7 m o d 143 = 123 cyphertext = plaintext^E mod N=85^7mod143=123 cyphertext=plaintextEmodN=857mod143=123

解密
p l a i n t e x t = c y p h e r t e x t D m o d 143 = 12 3 103 m o d 143 = 85 plaintext = cyphertext^D mod 143=123^{103}mod143=85 plaintext=cyphertextDmod143=123103mod143=85

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/45877.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

IIS 部署 SSL 证书提示证书链中的一个或多个中间证书丢失

现象描述 IIS Web 服务部署免费 SSL 证书时提示 “证书链中的一个或多个中间证书丢失&#xff0c;要解决此问题&#xff0c;请确保安装了所有中间证书”。 下载中间证书文件&#xff0c;根据您的证书加密算法类型下载中间证书至您的云服务器中。 安装中间证书 1. 在您需要部…

Arcgis地理配准栅格数据

前提 有时候获取的不同数据没有坐标,而却有共同点,这时候需要对数据进行配准校正,数据才能最终拼接镶嵌在一起 效果 1、准备数据 2、打开地理配准工具 3、地理配准中设置待配准数据 4、添加控制点 这份数据目测很容易找到控制点 在待配准数据上先选择控制点,再在基准数…

JavaScript_BOM

JavaScript_BOM BOM&#xff1a;Browser Object Model 浏览器对象模型。也就是 JavaScript 将浏览器的各个组成部分封装为对象。 我们要操作浏览器的各个组成部分就可以通过操作 BOM 中的对象来实现。 BOM 中包含了如下对象&#xff1a; Window&#xff1a;浏览器窗口对象N…

JavaScript基础语法(类型转换)

JavaScript基础语法&#xff08;类型转换&#xff09; 使用运算符的时候会发生类型转换。 其他类型转为number string转换为 number类型&#xff1a;按照字符串的字面值&#xff0c;转为数字。如果字面值不是数字&#xff0c;则转为NaN 将 string转换为 number有两种方式&…

存储器管理

文章目录存储器的层次结构存储器的指标多层结构的存储器系统主存储器与寄存器高速缓存和磁盘缓存程序的装入和链接对用户程序的处理步骤程序的装入程序的链接连续分配的存储管理方式单一连续分配固定分区分配动态分区分配基于顺序搜索的动态分区分配算法基于索引搜索的动态分区…

EventLoop

1.javascript是一门单线程语言 任务1 ---> 任务2--->任务3 单线程执行任务队列的问题&#xff1a; 如果前一个任务非常耗时&#xff0c;则后面的任务不得不一直等待&#xff0c;从而导致程序假死问题 2.同步任务和异步任务 同步任务&#xff1a;js主线程直接执行 同…

沉睡者IT - 什么是Web3.0?

欢迎关注沉睡者IT&#xff0c;点上面关注我 ↑ ↑ 什么是Web3.0&#xff1f; Web3&#xff08;也称为Web 3&#xff09;用最简单的话来解释就是&#xff0c;第三代互联网。 那么有朋友要问了&#xff0c;那么什么是第一代&#xff0c;什么是第二代&#xff1f;第三代又有什么…

2.1 Redis中SDS的定义

每个sds.h/sdshdr 结构表示一个SDS值 struct sdshdr { //记录 buf 数组中已经使用的字节数量 //等于SDS所保存字符串的长度 int len;//记录buf数组中未使用字节的数量 int free;//字节数组,用于保存字符串 char buf[]; };图2-1 展示了一个SDS 示例: 1、free 属性值为0&#x…

Kotlin 开发Android app(十三):RadioGroup和ViewPager控件实现底层分页按钮

安卓的控件是挺多的&#xff0c;没有办法一个一个的来说明&#xff0c;我们挑出了一些重点的控件&#xff0c;组成一些常见的布局&#xff0c;这样以后在遇到相同功能的界面时&#xff0c;就会有自己的思路&#xff0c;或者进行复用。 在这一节中&#xff0c;我们实现一个底层分…

CANoe-vTESTstudio之State Diagram编辑器(元素介绍)

State Diagram编辑器里的工具箱,有多个图形符号,它们是组成状态图表的图形元素,具有不同的作用。图形元素能够高效并快速地创建状态图表,然后生成测试用例 1. 基本测试设计元素 1.1 Setup Setup元素的测试代码能够执行一次,在检查测试用例之前。例如,用于建立诊断连接 …

uni-app接入mPaas扫码

目录 原因 配置mPaas应用 包名和打签名APK 使用云端插件 打自定义基座 原因 可以用uni.scanCode扫一下下面的二维码&#xff0c;会发现&#xff0c;左边的识别不了&#xff0c;而右边的能识别&#xff0c;其实人眼看&#xff0c;两个二维码应该是一样的。 只不过左边的会有…

String的几个面试题

1.. 第一个只出现一次的字符 class Solution {public int firstUniqChar(String s) {int []count new int[125];for(int i0;i<s.length();i){char chs.charAt(i);count[ch];}for(int i0;i<s.length();i) {char ch s.charAt(i);if (count[ch] 1) {return i;}}return -1…

网站被DDOS攻击怎么办?防护经验!

为了能够及时发现ddos攻击&#xff0c;下面我们就详细介绍一下网站受ddos攻击的症状&#xff1a; 网站遇到ddos攻击的表现之一&#xff1a;服务器CPU被大量占用 ddos攻击其实是一种恶意性的资源占用攻击&#xff0c;攻击者利用肉鸡或者攻击软件对目标服务器发送大量的无效请求&…

详解设计模式:代理模式

代理模式&#xff08;Proxy Pattern&#xff09;&#xff0c;Java 常见的设计模式之一&#xff0c;是 GoF 的 23 种设计模式中的一种结构型设计模式。 代理模式 是指客户端并不直接调用实际的对象&#xff0c;而是通过调用代理对象&#xff0c;来间接的调用实际的对象。代理对象…

矢量三维电磁铁的技术参数

产品介绍&#xff1a; 锦正茂自主研发的多极电磁铁以四极电磁铁居多&#xff0c;也有五极、六极、八极等多极的应用&#xff0c;主要应用于多极磁环充磁、径向梯度磁场、旋转磁场磁导向等多种应用。 产品用途&#xff1a; 电磁铁/电磁场发生器主要用于磁滞现象研究、磁化系数测…

SAP-S4 BP 业务伙伴(客户与供应商)管理后台配置

目录 一、定义业务伙伴角色 二、客户和BP主数据同步配置 三 、激活对话中平台对象的PPo请求 四、勾选活动的同步选项 五、定义编码范围 ​编辑 六、 设置客户与供应商的编码范围 一、定义业务伙伴角色 业务伙伴 IMG路径 &#xff1a; 跨应用组件->SAP业务伙伴 -> …

热门Java开发工具IDEA入门指南——如何配置IDE

IntelliJ IDEA&#xff0c;是java编程语言开发的集成环境。IntelliJ在业界被公认为最好的java开发工具&#xff0c;尤其在智能代码助手、代码自动提示、重构、JavaEE支持、各类版本工具(git、svn等)、JUnit、CVS整合、代码分析、 创新的GUI设计等方面的功能是非常强大的。 上文…

HarmonyOS应用API手势方法-PinchGesture

描述&#xff1a;用于触发捏合手势&#xff0c;触发捏合手势的最少手指为2指&#xff0c;最大为5指&#xff0c;最小识别距离为3vp。 Api&#xff1a;从API Version 7开始支持 接口&#xff1a;PinchGesture(value?: { fingers?: number, distance?: number }) 参数&…

【Android App】实战项目之仿微信的私信和群聊App(附源码和演示视频 超详细必看)

需要全部代码请点赞关注收藏后评论区留言私信~~~ 手机最开始用于通话&#xff0c;后来增加了短信功能&#xff0c;初步满足了人与人之间的沟通需求。然而短信只能发文字&#xff0c;于是出现了能够发图片的彩信&#xff0c;但不管短信还是彩信&#xff0c;资费都太贵了&#xf…

极光Q3财报解读:营收稳健控费见效 估值修复空间巨大

极光似乎正在渡过转型阵痛期。 11月23日&#xff0c;极光移动股份有限公司(JG.US)公布了2022年第三季度未经审计财务业绩&#xff0c;营收1130万美元&#xff0c;环比上升6%&#xff0c;同比降幅收窄&#xff0c;虽然低于市场预期的1214万美元&#xff0c;但是客户总数同比增长…