密码学学习笔记(二十二):RSA签名方案

在RSA中,计算公钥N的欧拉函数\phi (N)和私钥是关键步骤。

如何计算\phi (N)呢?

RSA算法中的N是两个质数 p 和 q 的乘积。所以两个质数必须要找到。一旦找到 p 和 q就可以使用公式\phi(N) = (p-1) (q-1)来计算\phi (N)

计算私钥d

私钥 d 是满足 e*d ≡ 1 mod  \phi (N) 的整数。换句话说,d 是 e 关于 ϕ(N) 的模逆元。这可以通过扩展欧几里得算法来计算。

如何单纯的使用数学的方法找到p和q呢?

p和q可以使用python代码找到。

from sympy import isprime, mod_inverse# 给定值
N = 9999
e = 5# 求 N 的素因数的函数
def find_prime_factors(N):for i in range(2, N):if N % i == 0 and isprime(i):p = iq = N // iif isprime(q):return p, qreturn None, None# 找到 p和q
p, q = find_prime_factors(N)# 计算 phi(N)
phi_N = (p - 1) * (q - 1)# 计算 d
d = mod_inverse(e, phi_N)p, q, phi_N, d

如果不想用代码呢?

可以使用比如试除法费马分解法轮换法等计算。

试除法

从最小的质数开始(比如2),检查它是否能整除N,如果不能,继续尝试下一个质数(比如3、5、7...)。一旦找到一个质数 p 可以整除N,那么 p 是N的一个因子。一个因子 q 可以通过 q=N/p 计算得到。接着验证q是不是质数,如果是的话,那么 p 和 q 就是要找的因子。

在RSA签名验证中,如何从给定的签名 σ 找回原始消息 M?

RSA签名验证的基本步骤是计算 M = \sigma ^{e} mod N,其中 M 是原始消息。这个过程基于RSA算法的数学原理,所以就算只有公钥也可以验证签名的有效性。所以如果得到\sigma的值就可以得出M。

中国剩余定理(CRT)是怎么加快签名过程的?

在不使用CRT的情况下,RSA签名是计算 \sigma = M^{d} mod Nσ=MdmodN,其中 M 是消息。使用CRT时,签名过程如下:

  1. 计算两个模数下的指数d_{p} = d\, mod \, (p-1)d_{q} = d \, mod \, (q-1)
  2. 分别在 p 和 q 下计算签名\sigma_{p} = M^{d_{p}} \, mod\, p\sigma_{q} = M^{d_{q}} \, mod\, q
  3. 使用CRT合并结果: 首先计算 q_{inv} = q^{-1}\, mod\, p

然后合并结果:\sigma = \sigma _{q} + q(q_{inv}(\sigma _{p}-\sigma _{q})\, mod\, p)\, mod \, N

这个过程有效地将在 N下的大数运算分解为在 p 和 q 下的更小更快的运算。因此,使用CRT可以显著加快RSA签名的速度。

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

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

相关文章

寻找链表的中间节点

问题描述: 给定一个头结点为head的非空单链表,返回链表的中间结点。如果有两个中间节点,则返回第二个中间结点,个数为奇数返回一个值,个数为偶数返回两个中间结点的第二个值。 思路: 用快慢指针来寻找中间…

Android File Transfer for Mac:畅享强大的安卓文件传输工具

作为一款功能强大的安卓文件传输工具,Android File Transfer for Mac(以下简称AFT)为Mac用户提供了便捷快速的安卓设备文件管理体验。无论是传输照片、音乐、视频还是文档,AFT都能满足你的需求,让你的文件传输更加高效…

设计模式---第三篇

系列文章目录 文章目录 系列文章目录前言一、模板方法模式二、知道享元模式吗?三、享元模式和单例模式的区别?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 一…

Centos7安装

想学Vmware安装可以看下下面链接,不想就算了 https://blog.csdn.net/weixin_43895362/article/details/134723073 选择第一项,安装直接CentOS 7,回车 稍等后出现进入下图,选择中文,这个只是安装时的语言 首先设置时间,时区选择上海,查看时…

用 LangChain 搭建基于 Notion 文档的 RAG 应用

如何通过语言模型查询 Notion 文档?LangChain 和 Milvus 缺一不可。 在整个过程中,我们会将 LangChain 作为框架,Milvus 作为相似性搜索引擎,用二者搭建一个基本的检索增强生成(RAG)应用。在之前的文章中&a…

图解「差分」入门(“前缀和“ 到 “差分“ 丝滑过渡)

题目描述 这是 LeetCode 上的 「1094. 拼车」 ,难度为 「中等」。 Tag : 「差分」、「前缀和」 车上最初有 capacity 个空座位,车只能向一个方向行驶(不允许掉头或改变方向)。 给定整数 capacity 和一个数组 trips, 表示第 i 次旅…

A++ 敏捷开发-1 如何改善

1 如何改善 敏捷开发过程改进案例 5月 A公司一直专门为某电信公司提供针对客服、线上播放等服务服务。 张工是公司的中层管理者,管理好几个开发团队,有5位项目经理向他汇报。 他听说老同学的团队都开始用敏捷开发,很感兴趣,便参…

【前端】利用正则生成目录,附加解决a链接锚点偏移

前言 从html字符串中提取出来目录。 目标和源内容都很明确,源内容是html字符串,提取目标是html字符串中h1~h6元素和其闭合标签中间的内容。 思路 分析 获取html字符串 第一步要获取html字符串内容。 观察html字符串 第二步, 观察html字…

Opencv制作电子签名(涉及知识点:像素过滤,图片通用resize函数,像素大于某个阈值则赋值为其它的像素值)

import cv2def resize_by_ratio(image, widthNone, heightNone, intercv2.INTER_AREA):img_new_size None(h, w) image.shape[:2] # 获得高度和宽度if width is None and height is None: # 如果输入的宽度和高度都为空return image # 直接返回原图if width is None:h_ratio …

flutter 自定义TabBar 【top 0 级别】

flutter 自定义TabBar 【top 0 级别】 前言一、基础widget二、tab 标签三、barView总结 前言 在日常开发中,tab 标签选项,是一个我们特别常用的一个组件了,往往我们在一个项目中,有很多地方会使用到它,每次单独去写&am…

2022年03月22日 Go生态洞察:泛型介绍

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…

HT71778 实时音频信号跟踪同步升压转换器的特性

HT71778是一款高功率、全集成升压转换器,集成16mΩ功率开关管和18mΩ同步整流管,为便携式系统提供G效的小尺寸处理方案。 HT71778 实时音频信号跟踪同步升压转换器的特性: ・实时音频信号跟踪的电源供电 SN 短接地, VIN 2.7~4.5V, VOUT 5…

Hdoop学习笔记(HDP)-Part.02 核心组件原理

目录 Part.01 关于HDP Part.02 核心组件原理 Part.03 资源规划 Part.04 基础环境配置 Part.05 Yum源配置 Part.06 安装OracleJDK Part.07 安装MySQL Part.08 部署Ambari集群 Part.09 安装OpenLDAP Part.10 创建集群 Part.11 安装Kerberos Part.12 安装HDFS Part.13 安装Ranger …

二、ZooKeeper集群搭建

目录 1、概述 2、安装 2.1 第一步:下载zookeeeper压缩包 2.2 第二步:解压 ​​​​​​​2.3 第三步:修改配置文件 ​​​​​​​2.4 第四步:添加myid配置 ​​​​​​​2.5 第五步:安装包分发并修改myid的值…

《微信小程序开发从入门到实战》学习三十八

4.2 云开发JSON数据库 4.2.9 条件查询与查询指令 在查询数据时,有时需要对查找的数据添加一些限定条件,只获取满足给定条件的数据,这样的查询称为条件查询。 可以在集合引用上使用where方法指定查询条件,再用get方法&#xff0…

IBL环境贴图原理及着色器实现【基于图像的照明】

IBL - Image Based Lighting - 也就是基于图像的照明,是一组照亮物体的技术,不是像上一章那样通过直接分析光,而是将周围环境视为一个大光源。 这通常是通过操作立方体贴图环境贴图(取自现实世界或从 3D 场景生成)来完…

基于hadoop下的hbase安装

简介 HBase是一个分布式的、面向列的开源数据库,该技术来源于Fay Chang所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”。就像Bigtable利用了Google文件系统(File System)所提供的分布式数据存储一样,…

YOLOv8创新魔改教程(一)如何进行模块创新

YOLOv8创新魔改教程(一)如何进行模块创新 YOLOv8创新魔改教程 本人研一,最近好多朋友问我要如何修改模型创新模块,就想着不如直接开个专栏歇一歇文章,也算是对自己学习的总结,本专栏以YOLOv8为例&#xf…

「C++」类和对象2

🎇个人主页:Ice_Sugar_7 🎇所属专栏:C启航 🎇欢迎点赞收藏加关注哦! 文章目录 🍉前言🍉构造函数🍌参数🍌默认构造函数🥝两种类型🥝编译…

优化问题,详解静态优化

优化问题,尤其静态优化问题,在控制系统设计中随处可见,例如基于燃油经济性和驾驶体验的多目标优化的汽车发动机 MAP 标定,基于性能指标优化的飞行器结构设计参数优化,以实验数据与模型输出匹配为目标的电池 RC 等效电路…