RSA加密原理

2024.2.23

密钥对的生成过程

1、随机找两个质数 P Q ,P Q 越大,越安全

本例取 P = 67 ,Q = 71

计算他们的乘积 N = P * Q = 4757

转化为二进为 1001010010101,该加密算法即为 13 位,实际使用中的算法是往往是 1024 位 或 2048 位,位数越长,算法越难被破解

2、计算 N 的欧拉函数 φ(N)  

(注:互质是公约数只有1的两个整数,叫做互质整数)

φ(N) 表示在小于等于 N 的正整数之中,与 N 构成互质关系的数的个数

例如:在 1 8 之中,与 8 形成互质关系的是 1357,所以 φ(n) = 4

如果 N = P * QP Q 均为质数,则
φ(N) = φ(P * Q)= φ(P - 1)φ(Q - 1) = (P - 1)(Q - 1)

本例中 φ(n) = 66 * 70 = 4620,这里记为 TT = φ(N) = 4620 

3、求公钥 E

E的范围:{E | gcd(E,T)=1, 1<E<T } 

讲人话就是 E , T 互质并且 E 大于 1 小于 T

本例取E=17(随便取,不要和T太接近了)

4、求私钥 D

D的范围:{D | E*D%T=1, 1<D<T } 

讲人话就是 E 和 D 的乘积除以 T 的余数等于 1 并且 D 大于 1 小于 T

本例取D=193

5、至此密钥对的生成就完成了

公钥(n,e)=(3403,17)    私钥(n,d)=(3403,193)

 6、加解密过程

加密(假设明文为123

明文^E % N = 123^17 % 3403 = 943

       ↑这里是幂运算,别理解成异或运算了

解密(现在密文就为943

密文^D % N = 943^193 % 3403 = 123

以上文字用 python 的话来讲就是

#先取两个随机的质数
P = int(input("请输入一个质数P:"))
Q = int(input("请输入一个质数Q:"))
N = P*Q#通过欧拉函数计算与N互质的个数
T = (P-1)*(Q-1)#取公钥
#找质数,埃拉托斯特尼筛法
primes = [True] * (T + 1)
for p in range(2, int(T**0.5) + 1):if primes[p]:primes[p*p::p] = [False] * ((T - p*p) // p + 1)
print([p for p in range(2, T + 1) if primes[p]])
E = int(input("请从上面数中选一个作为公钥E:"))#取私钥
print([i for i in range(2,T) if i*E%T==1])
D = int(input("请从上面数中选一个作为私钥D:"))#公钥(N,D) 私钥(N,E)
print(f"公钥({N},{E}) 私钥({N},{D})")#这里演示一下明密文的转化(仅数字)
plaintext = int(input("请输入明文"))
ciphertext = plaintext**E%N
plaintext = ciphertext**D%N 
print(f"密文为:{ciphertext}")
print(f"明文为:{plaintext}")

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

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

相关文章

基于RK3399 Android11适配OV13850 MIPI摄像头

目录 1、原理图分析2、编写和配置设备树3、调试方法4、遇到的问题与解决5、补丁 1、原理图分析 从上图可看出&#xff0c;我们需要关心的&#xff0c;①MIPI数据和时钟接口使用的是MIPI_TX1/RX1 ②I2C使用的是I2C4总线 ③RST复位引脚使用的是GPIO2_D2 ④PWDN使用的是GPIO1_C7 ⑤…

kali xrdp

Kali Linux 使用远程桌面连接——xrdp&xfce_kali xfce桌面-CSDN博客 Ubuntu/Debian/Kali xrdp远程桌面黑屏/空屏/无画面解决办法 - 知乎 (zhihu.com) sudo apt-get install xrdp -y sudo apt-get install xfce4 -ysudo systemctl enable xrdp --now systemctl status xrd…

RabbitMQ监控方法以及核心指标

RabbitMQ监控方法以及核心指标 1. 监控指标采集2. 使用rabbimq插件采集指标2.1 3.8.0之前版本&#xff0c;使用外部插件暴露2.2 3.8.0之后版本&#xff0c;使用内置插件暴露 3. 使用rabbitmq_exporter采集指标3.1 部署rabbitmq_exporter3.2 prometheus采集rabbitmq_exporter的暴…

【知识分享】自动化测试首选接口自动化?

在分层测试的“金字塔”模型中&#xff0c;接口测试属于第二层服务集成测试范畴。 相比UI自动化测试而言&#xff0c;接口自动化测试收益更大&#xff0c;且容易实现&#xff0c;维护成本低&#xff0c;有着更高的投入产出比。因此&#xff0c;项目开展自动化测试的首选一般为接…

OpenHarmony—UIAbility组件间交互(设备内)

UIAbility是系统调度的最小单元。在设备内的功能模块之间跳转时&#xff0c;会涉及到启动特定的UIAbility&#xff0c;该UIAbility可以是应用内的其他UIAbility&#xff0c;也可以是其他应用的UIAbility&#xff08;例如启动三方支付UIAbility&#xff09;。 本章节将从如下场…

MFC 多文档程序的基本编程

下载了一个openGL mfc的多文档程序,以此来学习mfc多文档模式的编程; 1 基本编程 它每次新建一个文档,会在窗口绘制一个三角形、一个矩形;如果没有了图形刷新一下; 先看一下为什么每次打开新文档会绘制图形; 生成工程之后主要有5个类,比单文档程序多了一个子框架类; 可…

主流开发语言和开发环境:探索编程世界的基础

在当今这个快速发展的技术时代&#xff0c;软件开发已经成为推动创新的重要力量。无论是构建下一代应用、开发先进的算法还是创建复杂的系统&#xff0c;选择合适的编程语言和开发环境都是至关重要的。在本文中&#xff0c;我们将探讨当前流行的几种主流开发语言以及它们常用的…

从零学习Linux操作系统第二十六部分 shell的基础知识

一、脚本存在的意义及幻数的作用 什么是shell &#xff1a;保护内核 脚本中命令的解释器 shell脚本的意义 1.记录命令执行的过程和执行逻辑&#xff0c;以便以后重复执行 2.脚本可以批量处理主机 3.脚本可以定时处理主机 如何创建shell脚本 #!/bin/bash ##幻数 幻数是最优…

C# CAD2016 cass10宗地Xdata数据写入

一、 查看cass10写入信息 C# Cad2016二次开发获取XData信息&#xff08;二&#xff09; 一共有81条数据 XData value: QHDM XData value: 121321 XData value: SOUTH XData value: 300000 XData value: 141121JC10720 XData value: 权利人 XData value: 0702 XData value: YB…

jenkins配置ssh的时候测试连接出现Algorithm negotiation fail

背景&#xff1a;当jenkins升级后&#xff0c;同时ssh插件也升级&#xff0c;测试ssh连接的时候 出现的问题&#xff1a; com.jcraft.jsch.JSchAlgoNegoFailException: Algorithm negotiation fail: algorithmName"server_host_key" jschProposal"ecdsa-sha2-n…

pikachu靶场-SQL-Inject

介绍&#xff1a; 在owasp发布的top10排行榜里&#xff0c;注入漏洞一直是危害排名第一的漏洞&#xff0c;其中注入漏洞里面首当其冲的就是数据库注入漏洞。一个严重的SQL注入漏洞&#xff0c;可能会直接导致一家公司破产&#xff01; SQL注入漏洞主要形成的原因是在数据交互中…

Android中Transition过渡动画的简单使用

前些天发现了一个蛮有意思的人工智能学习网站,8个字形容一下"通俗易懂&#xff0c;风趣幽默"&#xff0c;感觉非常有意思,忍不住分享一下给大家。 &#x1f449;点击跳转到教程 一、布局xml文件代码如下&#xff1a; <?xml version"1.0" encoding&quo…

C#与VisionPro联合开发——INI存储和CSV存储

1、INI存储 INI 文件是一种简单的文本文件格式&#xff0c;通常用于在 Windows 环境中存储配置数据。INI 文件格式由一系列节&#xff08;section&#xff09;和键值对&#xff08;key-value pairs&#xff09;组成&#xff0c;用于表示应用程序的配置信息。一个典型的 INI 文…

德州红马来酰亚胺,Texas Red-Mal,标记反应反应迅速、选择性高

您好&#xff0c;欢迎来到新研之家 文章关键词&#xff1a;德州红马来酰亚胺&#xff0c;Texas Red maleimide &#xff0c;Texas Red Mal&#xff0c;Texas Red-maleimide &#xff0c;Texas Red-Mal 一、基本信息 【产品简介】&#xff1a;Texas Red maleimide is a fluor…

论文笔记:利用词对比注意增强预训练汉字表征

整理了 ACL2020短文 Enhancing Pre-trained Chinese Character Representation with Word-aligned Att&#xff09;论文的阅读笔记 背景模型实验 论文地址&#xff1a;论文 背景 近年来&#xff0c;以 BERT 为代表的预训练模型在 NLP 领域取得取得了非常显著的效果。但是&…

前端数据可视化:ECharts使用

可视化介绍 ​  ​  应对现在数据可视化的趋势&#xff0c;越来越多企业需要在很多场景(营销数据&#xff0c;生产数据&#xff0c;用户数据)下使用&#xff0c;可视化图表来展示体现数据&#xff0c;让数据更加直观&#xff0c;数据特点更加突出。   ​  数据可视化主要目…

【工具】阿莫智能设备之脱机烧录器K202C-1

注意&#xff0c;本文档仅仅是介绍烧录器的资料构成&#xff0c;并非烧录器的说明书&#xff0c;详细请看各对说明书及视频。 1. 资料图解 首先需要下载资料&#xff0c;通常稳定发布版本可以从 www.amomcu.cn 下载&#xff0c; 也可以向我们客服获取最新版本&#xff0c; 获…

4G模块获取多个基站信息

获取多个基站信息&#xff0c;需要将其模块注网上不同的频段 以下使用ATQCFG"band" 配置频段 验证一 ATQENG"SERVINGCELL" 获取注网信息解析说明 在没锁频之前查询注网信息 [2024-02-23_11:22:41:108]ATCPIN? [2024-02-23_11:22:41:108]CPIN: R…

推荐系统经典模型YouTubeDNN

文章目录 YouTubeDNN概念YouTubeDNN模型架构图YouTubeDNN召回阶段YouTubeDNN层级介绍 YouTubeDNN排序阶段YoutubeDNN模型中的一些Trick负采样问题特征构造上下文选择 总结 YouTubeDNN概念 YouTubeDNN是YouTube用于做视频推荐的落地模型&#xff0c;其大体思路就是召回阶段使用…

Linux系统运维:离线安装sar-性能监视和分析工具

目 录 一、前言 二、系统环境 三、安装sar &#xff08;一&#xff09;准备工作 1、下载 sar 工具的安装包&#xff1a; 2、将安装包传输到 CentOS 服务器 &#xff08;二&#xff09;安装工作 1、解压 2、配置安装 3、编译 4、安装 &#xff08;三&#xff0…