RSA加密原理与RSA公钥加密系统、数字签名

news2025/1/12 3:03:33

通过公钥加密系统,可以对传输于两个通信单位之间的消息进行加密,即使窃听者窃听到加密之后的消息,也不能对其破译。

1、RSA公钥加密原理

1.1 几个核心概念

  • 公钥P与公钥函数P()
  • 密钥S与密钥函数S()
    可以简单理解,一个公钥对应一个公钥函数,知道了公钥也就知道了公钥函数。一个密钥也是对应一个密钥函数。我们要传输的信息M,经过公钥函数P()之后,就成了密文C,然后密文C经过密钥函数S()解密之后,就可以还原成密文M。
    由于公钥、公钥函数以及密钥、密钥函数是一一对应的,后续叙述中不再区分,即默认知道公钥,也就知道了公钥函数。

加密系统中,每个参与者,都有自己的公钥和密钥,公钥(公钥函数)是对外公开的,密钥是不对外公开的(这是加密的前提)

公钥函数和密钥函数互为反函数,即对于任意一条消息M,有:

M  = S(P(M))
M = P(S(M))

也就是说,无论哪种顺序,运用两把钥匙P和S对消息M进行变换之后,可以还原消息M。这是加密的基本原理。

1.2 RSA公钥加密系统中遵守的原则和假设

  • 系统每个参与者都有自己的公钥和密钥
  • 公钥对外公开,密钥只有自己知道
  • 其他人不能根据公钥P推断除密钥S

1.3 公钥加密信息传输过程

在公钥加密系统中,信息的接受方(假设为Alice),需要给信息的发送方(假设为Bob)提供公钥。右一般来说,在一个公钥加密系统中,每个参与者的公钥都是公开的(放在一个公开的目录)。记住一个关键点:
公钥加密消息传递中,接受方提供公钥,发送方使用接受方提供的公钥进行加密,然后发送。
假如Bob需要给Alice发送加密消息,那么Bob需要先获取Alice的公钥PA。然后使用公约PA对消息M进行加密,然后将加密的消息发送给Alice,然后Alice使用自己的密钥SA进行解密,然后就可以获得消息M了。由于密钥SA只有Alice自己知道,因此即使窃密者获取了密文C,由于不知道密钥SA,也无法对获取的密文C解密。
在这里插入图片描述

1.4 数字签名实现的原理与过程

在公钥系统的设想中,很容易实现数字签名。假如现在Alice希望把一个数字签署的答复M’发送给Bob。

  • Alice运用自己的密钥对签名进行加密
  • Alice将加密后的信息,即数字签名以及消息M‘一同发送给Bob
  • Bob收到数字签名之后,运用Alice的公钥进行解密,判断得到的消息是否来自Alice(假如消息M‘包含Alice的名字,那么Bob就知道该使用谁的公钥)
  • 如果等式成立,那么Bob就知道M’确实是来自Alice,否则就认为是伪造的签名。

在这里插入图片描述
这里判断的一个基本逻辑就是,只有数字签名是通过Alice的密钥加密得到的,那么对数字签名运用Alice的公钥PA解密之后,才能得到消息M’
那么想象一下,有没有可能一个伪造的签名,运用Alice的公钥解密之后也能得到消息M‘呢?
– – 这是不可能的,因为能够通过一种方法F伪造一个数字签名Q,并且签名Q经过Alice的公钥运算之后还能得到M’,那么有如下关系:
在这里插入图片描述
说明F就是PA的反函数,那么PA的反函数为SA,说明F就是SA,根据1.3中假设,是不能通过公钥P得到密钥S的,因此这就保证了不能产生伪造的签名。

1.5 数字签名和公钥加密的异同

同:

  • 使用同一套加密系统,都是信息发送者对信息进行加密,然后接受者对信息进行解密。

异:
从目的上来讲,公钥加密是为了保证发送信息的私密性,即信息只有接受者可以获取正确信息,其他人不能获取。而数字签名,主要目的是别人验证这个信息来源是否正确,签名的内容可以是公开的(没有私密性), 也可不公开。

从加密过程来讲,公钥加密使用的接受方的公钥和密钥,而数字签名使用的发送方的公钥和密钥
公钥加密是发送者运用信息接收方的公钥进行加密,然后接受者用自己的密钥解密。数字签名,是发送者用自己的密钥加密,接收者(需要验证信息的人)运用发送方的公钥进行加密。

1.6 公钥加密与数字签名结合使用

1.4中签属的信息是公开的、没有加密受到保护的。如果把公钥加密与数字签名结合起来使用,就可以创造出同时被签属和加密的信息:

  • 只有接收者才能接受到消息签署的消息
  • 接收者可以验证签属的信息来源是否正确

具体做法如下:

  • 签属者(发送方)运用自己的密钥(发送方密钥)对消息M’进行运算得到签名Q,
  • 发送方将消息M‘以及得到的签名Q一起作为整体消息M,使用接受方的公钥进行加密,得到密文C
  • 发送方将密文C发送给接受方
  • 接受方队密文C,运用自己的密钥(接收方密钥)进行解密,得到消息M(包含M’以及Q)
  • 接受方对解密后的消息Q使用发送方公钥进行运算,判断结果是否等于M’, 若等于则接受,否则拒绝

2 RSA加密系统的具体实现

通过上面的内容可以发现,要实现一个RSA加密系统,其实就是需要给参与者创建一对公钥和密钥
由于RAS加密系统在创建公钥和密钥的过程中,涉及到很多一些数论概念,推导过程也需要用到一些数论中的结论,有些麻烦和晦涩。这里仅给出创建过程和结论:

  • 公钥P = (e, n), 对外公开,作为参与者的RSA公钥
  • 密钥S = (d, n), 保密,作为参与者的RSA密钥
    一对公钥密钥涉及到三个参数e、d、n
    其中获得过程如下:
    1、选取两个很大素数p和q, pq很多可能上千位
    2、计算 n = pq
    3、选取一个与k = (p-1)
    (q-1) 互质的小jing奇数e
    4、对模k,计算e的乘法逆元d的值

知道公钥和密钥之后,对应的公钥方法和密钥方法也就确定了:
在这里插入图片描述
解密的原理(证明过程省略。。。):
在这里插入图片描述
上面的式子说明,无论说明顺序,一条消息经过公钥和密钥变换之后,可以将加密后的消息还原(解密)。

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

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

相关文章

【数据结构】—— 单链表的增删改查

❤️一名热爱Java的大一学生,希望与各位大佬共同学习进步❤️ 🧑个人主页:周小末天天开心 各位大佬的点赞👍 收藏⭐ 关注✅,是本人学习的最大动力 感谢! 📕该篇文章收录专栏—数据结构 目录 方…

BUUCTF web之随便注

启动靶场访问如下,输入1,报错,可知是字符型注入,变量由单引号包裹 输入1 and 11 --,显示正常 先直接用sqlmap注入一下,显示存在注入,但是始终注入不出来数据库,“[ERROR] unable to …

Arnold渲染器适合什么样的电脑配置

Arnold 是 Solid Angle 和 Sony Pictures Imageworks 联合打造的顶级光线追踪 3D 渲染器。该程序是 Sony Imageworks 的主要渲染器,被全球 300 多家工作室使用。Arnold 6.0 及更高版本支持 GPU 渲染。Arnold GPU 的硬件建议是什么? 1. Arnold GPU 硬件推…

OpenKylin适配和虚拟打印机

最近在测国产OS客户端部分。首先客户端程序在CentOS全部使用没毛病,但是CentOS桌面体验比较差。然后就试了UOS,在UOS上测试到打印这块花了很多时间,碰到问题是CUPS有反应,但是没生成PDF文件,各种试了好久没解决。就寻思…

Android:单Activity多Fragment,Navigation实现Fragment跳转,Fragment之间通过ViewModel共享数据

单Activity多Fragment&#xff0c;Navigation实现Fragment跳转&#xff0c;Fragment之间通过ViewModel共享数据1、MainActivity2、HomeFragment, DetailFragment2.1、HomeFragment2.2、DetailFragment3、MyViewModel参考1、MainActivity 1、activity_main.xml <?xml vers…

ovs-vswitchd的启动分析

ovs-vswitchd的启动分析&#xff08;无修改源码&#xff09; &#xff08;一&#xff09;主要数据结构和概念了解 1.概念 在 OVS 中, 有几个非常重要的概念&#xff1a; Bridge: Bridge 代表一个以太网交换机&#xff08;Switch&#xff09;&#xff0c;一个主机中可以创建一…

Metabase学习教程:提问-4

Metabase中的表连接 如何在简单和自定义问题中使用查询编辑器连接Metabase中的表。 当涉及到分析数据时&#xff0c;必须要使用连接是一个事实&#xff0c;在Metabase&#xff0c;我们试图使您的问题的答案尽可能简单&#xff0c;即使这需要一些更复杂的策略。在本文中&#…

Spring中拦截器重复注册的问题排查

注册器JpushInterceptor 功能&#xff1a;新版的Java推送服务&#xff0c;将部分请求转发到老版node 查看日志发现拦截器日志重复 同一个链路&#xff0c;发现&#xff0c;经过同一个拦截器两次 debug发现注册器重复注册 第一个通过registry.addInterceptor注册 是通过We…

组合数学总结

文章目录三、递推关系3.1 常系数线性递推关系特征根法1.齐次递推关系2.非齐次方程母函数方法三、递推关系 3.1 常系数线性递推关系 k阶齐次递推关系&#xff1a;anc1an−1c2an−2...ckan−k0&#xff0c;ck≠0(3.1.1)k阶非齐次递推关系&#xff1a;anc1an−1c2an−2...ckan−kf…

SpringCloud微服务(四)——Nacos服务注册和配置中心

SpringCloud Alibaba Nacos服务注册和配置中心 Spring Cloud Netflix Projects Entering Mainterance Mode SpringCloud Alibaba&#xff1a; 服务限流降级&#xff1a;默认支持 WebServlet、WebFlux, OpenFeign、RestTemplate、Spring Cloud Gateway, Zuul, Dubbo 和 Rocke…

在 UltraEdit v15.00 及更高版本中添加用于语法高亮的 wordfile丨使用教程

UltraEdit原生支持开箱即用的最常用编程和标记语言的语法突出显示。但是&#xff0c;我们也有数百个其他语言的单词文件&#xff0c;而且很容易找到并添加您需要的语言&#xff01;重要提示&#xff1a;此电源提示适用于运行 UltraEdit v15.00或 UEStudio v09.10及更高版本的用…

rosjava零散

笔者之前想在非ros环境下使用通信&#xff0c;了解到rosjava可以实现&#xff0c;不过后来换成了rosbridge&#xff0c;也搜集了一些rosjava的资料&#xff0c;放在这里供参考(没时间整理了&#xff0c;格式较乱请见谅) 安装方式&#xff1a;sudo apt-get install ros-indigo-…

Blind Backdoors in Deep Learning Models 论文笔记

#论文笔记# 1. 论文信息 论文名称Blind Backdoors in Deep Learning Models作者Eugene Bagdasaryan Vitaly Shmatikov Cornell Tech出版社USENIX Security Symposium 2021 &#xff08;网安A类会议&#xff09;pdf论文主页 本地PDF代码pytoch_Backdoors_101 2. introduction …

《第一行代码》核心知识点:Android简介

前言 自本文开始&#xff0c;我将更新《第一行代码 Android 第2版.pdf》&#xff0c;&#xff08;提取码&#xff1a;n5ag &#xff09; 核心要点系列&#xff0c;通过阅读本系列文章可以帮助有Android基础的开发人员&#xff0c;去除冗余的基础讲解&#xff0c;直击核心知识点…

GEE开发之Modis_ET数据分析和获取

GEE开发之Modis_ET数据获取1 ET(蒸散量)2 MOD16A2(500米/8天)2.1 MOD16A2下的所有指数2.2 ET影像获取和查看3 ET日数据下载(以MOD16A2为例)4 ET月数据下载(以MOD16A2为例)5 ET年数据下载(以MOD16A2为例)前言&#xff1a;主要介绍Modis下的ET数据的获取和下载&#xff08;日数据…

工厂模式【简单工厂+工厂+抽象工厂】总结

一、简单工厂模式 描述 简单工厂模式是属于创建型模式&#xff0c;又叫做静态工厂方法模式&#xff0c;但不属于23种GOF设计模式之一。简单工厂模式中专门定义一个简单工厂类来负责创建其他类的实例&#xff0c;被创建的实例通常都具有共同的父类。简单工厂类根据传入的参数&a…

wireshark工具详解、数据包抓取分析、使用教程

Wireshark界面 Wireshark查看数据捕获列表 数据包概要信息窗口&#xff1a;描述每个数据包的基本信息。如图&#xff0c;点击某行数据&#xff0c;即可在下方显示该数据包的信息。 1、数据包解析窗口&#xff1a;显示被选中的数据包的解析信息&#xff0c;包含每个数据包的整体…

通过request请求和servlet实现注册跳转界面案例及问题解决

案例&#xff1a;用户登录 * 用户登录案例需求&#xff1a; 1.编写login.html登录页面 username & password 两个输入框 2.使用Druid数据库连接池技术,操作mysql&#xff0c;day14数据库中user表 3.使用JdbcTemplate技术封装JDBC 4.登录成功跳转到Suc…

机器人操作系统ROS(19) 雷达和摄像头融合的资料

搜集的有关雷达和摄像头融合的资料。仅供参考&#xff1a; #1 传感器融合&#xff1a;激光雷达摄像头 摄像头产生的数据是2D图像&#xff0c;对于物体的形状和类别的感知精度较高。深度学习技术的成功起源于计算机视觉任务&#xff0c;很多成功的算法也是基于对图像数据的处理…

图神经网络 | Python基于图卷积的U-Net架构进行交通流量和速度的预测

图神经网络 | Python基于图卷积的U-Net架构进行交通流量和速度的预测 目录 图神经网络 | Python基于图卷积的U-Net架构进行交通流量和速度的预测效果分析基本描述程序实现核心概念参考资料效果分析 基本描述 此版本包含了训练和评估模型的代码,以预测Traffic4Cast挑战数据的交…