【深入浅出密码学】RSA

news2024/11/26 18:41:01

RSA密码体制

引言:

RSA加密的本意并不是为了取代对称密码,而且它比诸如AES的密码要慢很多,因为RSA当中涉及许多数学计算,RSA通常和类似AES的对称密码一起使用,真正用来加密大量数据的是对称密码。而RSA主要保护对称密码的密钥。

数学困难问题:RSA基于大整数分解难题

加密解密

RSA的加密和解密都是在整数环 Z n Z_n Zn内完成的。假设RSA加密明文 x x x,而表示 x x x的位字符串则是 Z n = { 0 , 1 , . . . , n − 1 } Z_n=\{0,1,...,n-1\} Zn={0,1,...,n1}内的元素,所以明文 x x x表示的二进制必然小于 n n n

在这里插入图片描述

x , y , n , d x,y,n,d x,y,n,d都是非常长的数字,通常为1024位或更长。值 e e e有时称为加密指数或公开指数,私钥 d d d有时称为解密指数或保密指数。如果Alice想将一个加密后的消息传送给Bob,她需要拥有Bob的公钥 ( n , e ) (n,e) (n,e),而Bob将用他自己的私钥 d d d进行解密。

密钥生成与正确性检验

注:我们限定了 g c d ( e , p h i n ) = 1 gcd(e,phi_n)=1 gcd(e,phin)=1那么私钥 d d d,一定存在

这里我们可以借助扩展欧几里得算法求解私钥 d d d
g c d ( p h i n , e ) = 1 = s ∗ p h i n + t ∗ e gcd(phi_n,e)=1=s*phi_n+t*e gcd(phin,e)=1=sphin+te
此时,我们的参数 t t t就是我们求解的私钥 d d d.

d = t   m o d   ( p h i n ) d=t\ mod\ (phi_n) d=t mod (phin)

正确性证明
在这里插入图片描述在这里插入图片描述

快速指数运算

int qpow(int a, int n){
    int ans = 1;
    while(n){
        if(n&1)        //如果n的当前末位为1
            ans *= a;  //ans乘上当前的a
        a *= a;        //a自乘
        n >>= 1;       //n往右移一位
    }
    return ans;
}

借助CRT加速加解密

对于任意的 ( m 1 , m 2 ) (m_1,m_2) (m1,m2)必然存在一个唯一的 m m m,使得
m 1 = m   m o d   ( p ) m 2 = m   m o d   ( q ) m_1=m\ mod\ (p) \\ m_2=m\ mod\ (q) m1=m mod (p)m2=m mod (q)
此时,可以把求解 c d   m o d   n c^d\ mod\ n cd mod n的计算,转换成求解这个方程组。但是此时的 d d d还是比较大,计算比较困难。

d = k ∗ ( p − 1 ) + r d=k*(p-1)+r d=k(p1)+r,则 c d   m o d   p = c r ∗ c k ∗ ( p − 1 )   m o d   p = c r m o d    p c^d\ mod\ p=c^r*c^{k*(p-1)}\ mod\ p=c^r \mod p cd mod p=crck(p1) mod p=crmodp

其中 r = d   m o d   ( p − 1 ) r=d\ mod\ (p-1) r=d mod (p1),因此, ( c d m o d      p ) (c^d \mod\ p) (cdmod p)可以降解为 c ( d   m o d   p − 1 )   m o d   p c^{(d\ mod\ p-1)}\ mod\ p c(d mod p1) mod p

( c d m o d      q ) (c^d \mod\ q) (cdmod q)可以降解为 c ( d   m o d   q − 1 )   m o d   q c^{(d\ mod\ q-1)}\ mod\ q c(d mod q1) mod q

在这里插入图片描述

素数检测

在这里插入图片描述

费马定理对于所有的素数成立如果 p p p时一个素数,那么对于任意的 a a a,都有 a p − 1 = 1   m o d   p a^{p-1}=1\ mod\ p ap1=1 mod p

如果,运算时 a p − 1   m o d   p ≠ 1 a^{p-1}\ mod\ p \neq 1 ap1 mod p=1,那么可以直接判断 p p p是合数直接退出。

如果,满足 a p − 1 = 1   m o d   p a^{p-1}=1\ mod\ p ap1=1 mod p还需要不断变化 a a a,多次检验

在这里插入图片描述

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

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

相关文章

Linux0.11内核源码解析-block_dev.c

目录 block_dev.c 文件的作用 int block_write(int dev, long * pos, char * buf, int count) block_dev.c 文件的作用 block_dev.c 文件的作用 block_dev.c 文件就包含两个函数,分别是block_read和block_write函数,提供给read和write系统调用 块读写…

STM32开发踩坑——基于CubeMx+Gcc移植正点原子3.5‘TFTLCD(开发环境:正点F103精英版+3.5‘TFTLCD)

成立这个专栏的目的是,记录自己嵌入式开发遇到的问题,与成功的解决方法,方便自己回顾。 最近在学习王维波老师的《STM32Cube高效开发教程》,王老师移植的是普中科技的驱动,而我手动移植了一下正点原子的lcd驱动&#…

【Java高级语法】(三)泛型:关于泛型最全面的讲解来了~

Java高级语法详解之泛型 :one: 概念:two: 优势:three: 使用3.1 泛型类3.2 泛型接口3.3 泛型方法 :four: 通配符(Wildcards)4.1 无界通配符(Unbounded Wildcard)4.2 上限通配符(Upper Bounded Wildcard)4.3 …

aardio - 【库】http访问网页

为了简化http访问操作,提高速度,丰富功能,特封装了此库,可以根据需要进行选择。 本库带一个dll,所以建议优先选择使用 inet.http 库: 如果使用 inet.http库,直接 inet.http.get() 速度较慢。 大…

理解3ds max中的容器的概念

实验一: 在场景中创建一个容器 把这个容器保存为一个文件,在文件夹中可看到此容器文件,其大小为892KB,同时可看到生成一个同名的lock类型文件。 将场景中的某一个物体(面加多一点的)添加到容器中&#x…

框架---面经

Spring 循环依赖 概念 多个实体之间相互依赖并形成闭环的情况就叫做"循环依赖”,也叫做”循环引用。 三级缓存解决循环依赖的原理 循环依赖的解决方案--- Feild注入单例(AutoWired) 直接在类的成员变量上使用Autowired注解&#xf…

SM2椭圆曲线公钥密码算法

国家密码管理局于2010年12月17日发布了SM2椭圆曲线公钥密码算法,并要求为对现有基于RSA算法的电子认证系统、密钥管理系统、应用系统进行升级改造。关于算法标准,请参见《国家密码管理局公告(第 21 号)》,网址为​​ht…

JavaWeb【总结】——(请求和响应)浏览器发送请求的方式 服务器响应的方式

本文目录 引出JavaWeb相关知识1.网页状态码web相关背景知识如何在idea中建tomcat web项目2.Web的请求request:get和post,响应response3.同步请求和异步请求Ajax,以及异步的Json响应4.同步jsp和异步ajax的axios下,转发或重定向思考…

【图片轮播】Vue如何实现移动端图片轮播效果,支持左右滑动(附图文及代码)

【写在前面】 日常生活中,其实我们是离不开手机查看相册的,尤其是图片的轮播展示,最近我就接到我家老大给出的需求,首先是从网上下载下来之前她做的图片,然后她就希望能够在自己手机上能随时查看,这不没办法…

Java使用OpenCV进行图像操作

OpenCV图像操作 OpenCV概述下载与安装目录说明项目集成验证 Mat类创建Mat对象其他操作 常见图像API读取与输出图像显示图像图像压缩和解压缩图像转换图像缩放亮度调整图像锐化图像梯度图像二值化边缘检测图像高斯模糊图像反色 OpenCV 概述 OpenCV(开源计算机视觉库…

2023互联网高级测试工程师至少具备的能力

业务熟悉 熟悉本系统 测试人员参与测试的系统的各种业务场景,必须做到精熟 。一旦需求有改动,可以清楚快速的知道上下文。同时可以清楚的知道哪些点是需要重点测试的。 熟悉跟本系统有通讯的上下游系统业务 跟本系统有通讯的上下游系统也要非常熟悉。这…

Exception in thread “main“ java.lang.UnsupportedClassVersionError 50报错处理

之间正常走jenkinsdocker自动化部署的项目,今天改了一个文件,点了一下,竟然没有部署上去,提示如上,如下 Exception in thread "main" java.lang.UnsupportedClassVersionError: com/coocaa/tsp/sys/user/Use…

Web 自动化测试Selenium 之PO 模型

目录 1. po 模型介绍 2. PageObject 设计模式 3. PO 的核心要素 4. 非PO 实现 5. PO 实现 6. 总结 7. PO 模式的特点 总结: 1. po 模型介绍 在自动化中,Selenium 自动化测试中有一个名字经常被提及 PageObject (思想与面向对象的特征相同)&#x…

【改进算法】混合鲸鱼WOA和BAT算法(Matlab代码实现)​

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

Python键盘监听:实现快捷操作和自动化脚本(监听组合键

前言 本文主要介绍一下使用Python进行事件监听功能,以实现一些特有的操作。本文旨在介绍如何实现这一功能。 笔者根据一些需求写了一个小工具,流程和功能如下图所示(实际功能有更多): 该工具主要实现了 键盘监听 和 鼠…

从Linux源码看TIME_WAIT状态的持续时间

前言 笔者一直以为在Linux下TIME_WAIT状态的Socket持续状态是60s左右。线上实际却存在TIME_WAIT超过100s的Socket。由于这牵涉到最近出现的一个复杂Bug的分析。所以,笔者就去Linux源码里面,一探究竟。 首先介绍下Linux环境 TIME_WAIT这个参数通常和五…

C++入门,一些C++基本概念介绍

文章目录 目录 前言 1.C关键字 1.1命名空间 1.2命名空间定义 1.3命名空间的使用 2.C输入&输出 3.缺省参数 3.1缺省参数的概念 3.2缺省参数分类 4.函数重载 4.1函数重载的概念 5.引用 5.1 引用特性 5.2 常引用 5.3引用的使用场景 5.4引用和指针 6.内联函数…

【Java基础】注解——自定义注解

什么是注解? Java 注解(Annotation)又称 Java 标注,是 JDK5.0 引入的一种注释机制。 比如我们常见的Override和Deprecated都是注解,注解可以加在类、方法、成员变量等上面,类似于给他们“打标签"。 注解怎么定义? public interface…

华为OD机试真题 JavaScript 实现【百钱买百鸡问题】【牛客练习题】

一、题目描述 公元五世纪,我国古代数学家张丘建在《算经》一书中提出了“百鸡问题”:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何? 现要求你打印出所有花一百元买一百…

AM@空间直角坐标系@数量积和向量积@向量的外积在物理学中的相关概念

文章目录 空间直角坐标系坐标面分向量坐标分解式余弦定理数量积的坐标表示公式 向量积向量积的坐标表示公式 向量的外积在物理学中的相关概念物理量ref 角速度和向量积量纲Base unit (measurement)Background🎈International System of Units🎈附 表达方…