有趣的数学 为什么素数在密码学中很重要?

        这里我们将探讨为什么素数在密码学中很重要。我们将根据特定的密码系统( RSA 算法)来进行深入了解。

一、素数的特殊性

        每个数字都可以分解为它的素数。一般来说,找到一个数的因数是非常困难的。要找到一个自然数的所有素因数,必须尝试将其除以它的可能因数。

        找到一个大数的质因数是非常困难的。但计算具有给定素数的数字非常容易:

        理想情况下,我们使用两个大的素数。然后我们计算这两者的乘积来加密消息。为了解密它,我们需要素数之一,因为没有简单的方法可以单独计算素数 1 和素数 2。但在我们详细讨论如何准确使用这些数字之前,让我们先看一下不同的加密系统。

二、密码系统

        在密码学中,我们有两种重要的方法来加密消息:对称加密和非对称加密。

        在对称情况下,双方共享相同的密钥。我们使用相同的密钥来加密和解密消息。只要只有两个人拥有钥匙,并且他们有办法安全地彼此分享,那就非常安全。

        现在我们可以想象,这种方法实现起来是非常困难的。如果我们想给某人写一封加密的电子邮件,我们不必首先与他亲自会面来交换密钥。

        这就是为什么在非对称加密中,我们有两种不同的密钥,一种用于加密,一种用于解密。一把钥匙是给消息作者的。写完消息后,他可以使用收件人的公钥对其进行加密。顾名思义,该密钥是公开的,并且可以在密钥数据库中进行查找。由于它仅用于加密,因此公开不会造成任何损害。另一方面,还有私钥。该密钥仅对一个人(即消息的接收者)可见。他可以用它来解密他收到的消息:

三、使用质数进行加密

        现在我们已经了解了两种不同的加密系统,让我们看看在非对称加密的情况下如何创建公钥和私钥。首先,应该知道,我们不能直接加密文本,而必须先将其转换为数字。这个过程称为填充,发生在一个为每个符号分配一个数字的列表中。然后我们将每个数字连接起来创建另一个数字,这里我们称之为m,然后对其进行加密。一个非常简单的填充列表只是将每个字母分配到其在字母表中的位置,例如,“A”分配给 1,“B”分配给 2 等。虽然此列表只允许非常简单的单词,但足以理解 RSA 背后的理论。 

1、创建密钥

        我们在以下过程中使用这种机制来创建两个密钥,一个私钥和一个公钥:

        1、选择两个随机的、随机独立的素数,p和q。

        2、计算两者的乘积N = pq。

        3、计算两者的 Phi 函数:\phi (N) = (p-1) (q-1)

        4、选择一个与N互质且小于N的自然数g

        5、计算g模\phi (N)的乘法逆k,即g \phi (N)g \cdot k + d \cdot \phi(N) = 1

        N和g现在构建我们的公钥,我们将使用它们来加密消息。k是我们的私钥,用来解密。为了更清楚地看到这一点,我们来看看加密和解密过程。

2、加密和解密

        现在,我们使用公钥对消息m进行加密:

s \cong m^{g} \textrm{ mod } N

        我们用以下方法解密它:

m \cong s^{k} \textrm{ mod } N

        正如我们所看到的,只有当我们有g \phi (N)的乘法逆k时,我们才能解密。

        由于在可预见的未来不可能计算出较大的素数(N),因此没有私钥就无法解密消息。这使得系统非常安全。

3、一个示例

(1)创建密钥

        我们要加密的字母是“O”,我们将其转换为数字m=15,因为它是字母表中的第十五个数字。现在我们选择随机素数。为了简单起见,我们选择素数p=13q=17

​        然后我们构建素数的 phi 函数\phi (N) = (p-1) (q-1) = 192

        选择一个与\phi (N)互质的自然数g,我们选择29。

        唯一需要计算的是g的逆k。29 \cdot k + 192 \cdot d = 1。在欧几里得算法的帮助下,我们将其计算为53。

#求解二元一次不定方程 
#29x + 192y = 1def ext_euclid(a, b):if b == 0:return 1, 0, aelse:x, y, q = ext_euclid(b, a % b)x, y = y, (x - (a // b) * y)return x, y, qext_euclid(29, 192)# 解为x = 53 y=-8

        这样我们就有了公钥N = p\cdot q = 221。还有我们的私钥k=53

(2)加密和解密

        接下来我们加密我们的数字:

15 \cong s^{29} \textrm{ mod } 221

s = 19

        我们现在就拥有了加密的消息,并且可以安全地将其传输给收件人,而任何人都无法知道它代表字母“O”。

        为了解密消息,我们需要逆数k=53

15 \cong 19^{53} \textrm{ mod }221

         现在我们再次查看字母表,看到第十五个字母是“O”,这意味着我们已经成功加密和解密了我们的消息。

四、小结

        正如上面所描述的,我们可以利用无法将大数分解为素数来生成安全的非对称密码系统。

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

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

相关文章

Zookeeper 分布式服务协调治理框架介绍入门

文章目录 为甚么需要Zookeeper一、Zookeeper 介绍1.1 介绍1.2 Zookeeper中的一些概念1.2.1 集群角色1.2.2 会话 session1.2.3 数据节点 Znode1.2.4 版本1.2.5 事件监听器 Watcher1.2.6 ACL 权限控制表(Access Control Lists) 二、 Zookeeper的系统模型2.1.1 ZNode节点2.1.2 ZNo…

基于ssm的班级事务管理系统+vue论文

摘 要 在如今社会上,关于信息上面的处理,没有任何一个企业或者个人会忽视,如何让信息急速传递,并且归档储存查询,采用之前的纸张记录模式已经不符合当前使用要求了。所以,对班级事务信息管理的提升&#x…

【LeetCode:114. 二叉树展开为链表 | 二叉树 + 递归】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

STM32 基础知识(探索者开发板)--135讲 ADC转换

ADC定义: ADC即模拟数字转换器,英文详称 Analog-to-digital converter,可以将外部的模拟信号转换 ADC数模转换中一些常用函数: 1. HAL_ADC_Init 函数 HAL_StatusTypeDef HAL_ADC_Init(ADC_HandleTypeDef *hadc); 初始化ADC 形参&…

后端主流框架-SpringMvc-day2

Java中的文件下载 2 文件下载 文件下载:就是将服务器(表现在浏览器中)中的资源下载(复制)到本地磁盘; 2.1 前台代码 前台使用超链接,超链接转到后台控制器,在控制器通过流的方式…

AI:111-基于深度学习的工业设备状态监测

🚀点击这里跳转到本专栏,可查阅专栏顶置最新的指南宝典~ 🎉🎊🎉 你的技术旅程将在这里启航! 从基础到实践,深入学习。无论你是初学者还是经验丰富的老手,对于本专栏案例和项目实践都有参考学习意义。 ✨✨✨ 每一个案例都附带有在本地跑过的关键代码,详细讲解供…

技术与艺术的完美结合,AI艺术字生成平台一览

在创作的世界里,文字不仅是沟通的桥梁,更是灵魂的画笔。有时,我们的海报需要一丝文案的点缀,一些充满艺术感的文字,为作品注入更多的情感与深度。除了手写的文字,AI艺术字为我们提供了新的可能。AI生成未来…

CF1909_C. Heavy Intervals题解

CF1909_C. Heavy Intervals题解 题目传送门(Problem - C - CodeforcesCodeforces. Programming competitions and contests, programming communityhttps://codeforces.com/contest/1909/problem/C)。 题目翻译如下:(图片来源&a…

操作系统期末复习!

引论及进程管理 1.操作系统的主要功能有( )。 A.进程管理、存储器管理、设备管理、处理机管理 B.虚拟存储管理、处理机管理、进程管理、文件管理 C.处理机管理、存储器管理、设备管理、文件管理 D.进程管理、中断管理、设备管理、文件管理 2.操作系统是对( )进行管…

助力工业生产“智造”,基于YOLOv8全系列模型【n/s/m/l/x】开发构建纺织生产场景下布匹瑕疵检测识别系统

纯粹的工业制造没有办法有长久的发展过程,转制造为全流程全场景的生产智造才是未来最具竞争力的生产场景,在前面的开发实践中我们已经涉足工业生产场景下进行了很多实地的项目开发,如:PCB电路板缺陷检测、焊接缺陷检测、螺母螺钉缺…

系列十、Spring Cloud Gateway

一、Spring Cloud Gateway 1.1、概述 Spring Cloud全家桶中有个很重要的组件就是网关,在1.x版本中采用的是Zuul网关,但是在2.x版本中,由于Zuul的升级一直跳票,Spring Cloud最后自己研发了一个网关替代Zuul,即&#xf…

ASP.NET Core基础之图片文件(一)-WebApi图片文件上传到文件夹

阅读本文你的收获: 了解WebApi项目保存上传图片的三种方式学习在WebApi项目中如何上传图片到指定文件夹中 在ASP.NET Core基础之图片文件(一)-WebApi访问静态图片文章中,学习了如何获取WebApi中的静态图片,本文继续分享如何上传图片。 那么…

详谈电商网站建设的四大流程!

在21世纪的互联网时代,电商网站的建设是每个企业发展不可缺少的一次机遇。企业商城网站建设成功也许会获得更大的了利润;如果网站建设不成功,那么也会带来一定的损失。所以建设电商网站不是那么一件简单的事情。那么电商网站制作流程是怎样的…

C++_find 统计一个单词 在一段文中出现的次数

注解: 使用y.find(x, n)从位置n开始在字符串y中查找子串x首次出现的位置。如果找到了子串x,则find()函数会返回该子串在y中的起始索引(位置),否则返回-1(或npos)表示未找到。当find()函数返回非-1值时&…

我开发了一个聚合网盘资源搜索引擎-支持阿里云盘与夸克网盘资源

还在为找不到电子书资源而发愁?还在愁没有高清影视剧观看? 来试试我开发的云盘资源搜索引擎吧! 公众号回复关键词: 搜索 ! 就可以获取到网站网址。 这里还有资源分享微信群,不定期分享资源。 关于界面 怎么使用这个引擎&#x…

ubuntu远程桌面连接之novnc

一、前言 该操作是为了实现vnc桌面连接为url连接方式,且在浏览器中可以对ubuntu进行操作。在使用novnc进行操作前,需要先安装vnc才可。ubuntu下如何安装vnc,可看博主前面写的一篇文,ubuntu远程桌面连接之vnc-CSDN博客,…

[雷池WAF]长亭雷池WAF配置基于健康监测的负载均衡,实现故障自动切换上游服务器

为了进一步加强内网安全,在原有硬WAF的基础上,又在内网使用的社区版的雷池WAF,作为应用上层的软WAF。从而实现多WAF防护的架构。 经过进一步了解,发现雷池WAF的上游转发代理是基于Tengine的,所以萌生出了一个想法&…

低代码平台在自动驾驶系统开发中的应用

自动驾驶技术的发展正在为交通领域带来革命性的变化。其中关键的一环是自动驾驶系统的开发,该过程通常需要大量的编程工作和复杂的算法。然而,随着低代码技术的崛起,开发者能够大幅简化自动驾驶系统的开发过程,为了降低开发难度和…

算法与数据结构之链表<一>(Java)

目录 1、链表的定义 2、链表的特点 3、为何要使用链表 4、数组与链表的区别 5、链表的增删查 5.1、在头部插入链表 5.2、在中间插入链表 5.3、删除头节点 5.4、删除中间节点 5.5、查询某个值 6、链表的应用 6.1 如何设计一个LRU缓存算法? 6.2 约瑟夫问题 1、链表的定…

计算机毕业设计-----SSM自习室图书馆座位预约管理系统

项目介绍 一款由jspssmmysql实现的图书馆预约占座管理系统,前端采用的是当下最流行的easyui框架,后台用的ssm(spring、springMVC、mybaits)框架.添加学生和教师时会自动在用户表中注册,定时任务会定时生成座位信息&am…