RSA算法 概述

常见加密算法DES/AES/ECC/RSA/SHA1/MD5概述 这些加密算法各有特点和适用场景,从古老的DES到现代的AES和ECC,以及非对称加密的RSA和散列函数SHA1与MD5,它们共同构成了现代密码学的基础。 阅读详情
 它是第一个既能用于数据加密也能用于数字签名的算法。它易于理解和操作,也很流行。算法的名字以发明者的名字命名:Ron Rivest, Adi Shamir 和Leonard Adleman。但RSA的安全性一直未能得到理论上的证明。它经历了各种攻击,至今未被完全攻破。

一、RSA算法 :

首先, 找出三个数, p, q, r,
其中 p, q 是两个相异的质数, r 是与 (p-1)(q-1) 互质的数......
p, q, r 这三个数便是 private key
 
接著, 找出 m, 使得 rm == 1 mod (p-1)(q-1).....
这个 m 一定存在, 因为 r 与 (p-1)(q-1) 互质, 用辗转相除法就可以得到了.....
再来, 计算 n = pq.......
m, n 这两个数便是 public key
 
编码过程是, 若资料为 a, 将其看成是一个大整数, 假设 a < n....
如果 a >= n 的话, 就将 a 表成 s 进位 (s <= n, 通常取 s = 2^t),
则每一位数均小於 n, 然後分段编码......
接下来, 计算 b == a^m mod n, (0 <= b < n),
b 就是编码後的资料......
 
解码的过程是, 计算 c == b^r mod pq (0 <= c < pq),
於是乎, 解码完毕...... 等会会证明 c 和 a 其实是相等的  :)
 
如果第三者进行窃听时, 他会得到几个数: m, n(=pq), b......
他如果要解码的话, 必须想办法得到 r......
所以, 他必须先对 n 作质因数分解.........
要防止他分解, 最有效的方法是找两个非常的大质数 p, q,
使第三者作因数分解时发生困难.........
 
 
<定理>
若 p, q 是相异质数, rm == 1 mod (p-1)(q-1),
a 是任意一个正整数, b == a^m mod pq, c == b^r mod pq,
则 c == a mod pq
 
证明的过程, 会用到费马小定理, 叙述如下:
m 是任一质数, n 是任一整数, 则 n^m == n mod m
(换另一句话说, 如果 n 和 m 互质, 则 n^(m-1) == 1 mod m)
运用一些基本的群论的知识, 就可以很容易地证出费马小定理的........
 
<证明>
因为 rm == 1 mod (p-1)(q-1), 所以 rm = k(p-1)(q-1) + 1, 其中 k 是整数
因为在 modulo 中是 preserve 乘法的
(x == y mod z  and  u == v mod z  =>  xu == yv mod z),
所以, c == b^r == (a^m)^r == a^(rm) == a^(k(p-1)(q-1)+1) mod pq
 
1. 如果 a 不是 p 的倍数, 也不是 q 的倍数时,
   则 a^(p-1) == 1 mod p (费马小定理)  =>  a^(k(p-1)(q-1)) == 1 mod p
      a^(q-1) == 1 mod q (费马小定理)  =>  a^(k(p-1)(q-1)) == 1 mod q
   所以 p, q 均能整除 a^(k(p-1)(q-1)) - 1  =>  pq | a^(k(p-1)(q-1)) - 1
   即 a^(k(p-1)(q-1)) == 1 mod pq
   =>  c == a^(k(p-1)(q-1)+1) == a mod pq
 
2. 如果 a 是 p 的倍数, 但不是 q 的倍数时,
   则 a^(q-1) == 1 mod q (费马小定理)
   =>  a^(k(p-1)(q-1)) == 1 mod q
   =>  c == a^(k(p-1)(q-1)+1) == a mod q
   =>  q | c - a
   因 p | a
   =>  c == a^(k(p-1)(q-1)+1) == 0 mod p
   =>  p | c - a
   所以, pq | c - a  =>  c == a mod pq
 
3. 如果 a 是 q 的倍数, 但不是 p 的倍数时, 证明同上
 
4. 如果 a 同时是 p 和 q 的倍数时,
   则 pq | a
   =>  c == a^(k(p-1)(q-1)+1) == 0 mod pq
   =>  pq | c - a
   =>  c == a mod pq
                                        Q.E.D.
 
 
这个定理说明 a 经过编码为 b 再经过解码为 c 时, a == c mod n  (n = pq)....
但我们在做编码解码时, 限制 0 <= a < n, 0 <= c < n,
所以这就是说 a 等於 c, 所以这个过程确实能做到编码解码的功能.....

二、RSA 的安全性

RSA的安全性依赖于大数分解,但是否等同于大数分解一直未能得到理论上的证明,因为没有证明破解 RSA就一定需要作大数分解。假设存在一种无须分解大数的算法,那它肯定可以修改成为大数分解算法。目前, RSA 的一些变种算法已被证明等价于大数分解。不管怎样,分解n是最显然的攻击方法。现在,人们已能分解多个十进制位的大素数。因此,模数n 必须选大一些,因具体适用情况而定。

三、RSA的速度

由于进行的都是大数计算,使得RSA最快的情况也比DES慢上倍,无论是软件还是硬件实现。速度一直是RSA的缺陷。一般来说只用于少量数据加密。

四、RSA的选择密文攻击

RSA在选择密文攻击面前很脆弱。一般攻击者是将某一信息作一下伪装( Blind),让拥有私钥的实体签署。然后,经过计算就可得到它所想要的信息。实际上,攻击利用的都是同一个弱点,即存在这样一个事实:乘幂保留了输入的乘法结构:

( XM )^d = X^d *M^d mod n

  前面已经提到,这个固有的问题来自于公钥密码系统的最有用的特征--每个人都能使用公钥。但从算法上无法解决这一问题,主要措施有两条:一条是采用好的公钥协议,保证工作过程中实体不对其他实体任意产生的信息解密,不对自己一无所知的信息签名;另一条是决不对陌生人送来的随机文档签名,签名时首先使用One-Way HashFunction 对文档作HASH处理,或同时使用不同的签名算法。在中提到了几种不同类型的攻击方法。

五、RSA的公共模数攻击

若系统中共有一个模数,只是不同的人拥有不同的e和d,系统将是危险的。最普遍的情况是同一信息用不同的公钥加密,这些公钥共模而且互质,那末该信息无需私钥就可得到恢复。设P为信息明文,两个加密密钥为e1和e2,公共模数是n,则:

C1 = P^e1 mod n

C2 = P^e2 mod n

密码分析者知道n、e1、e2、C1和C2,就能得到P。

因为e1和e2互质,故用Euclidean算法能找到r和s,满足:

r * e1 + s * e2 = 1

假设r为负数,需再用Euclidean算法计算C1^(-1),则

( C1^(-1) )^(-r) * C2^s = P mod n

  另外,还有其它几种利用公共模数攻击的方法。总之,如果知道给定模数的一对e和d,一是有利于攻击者分解模数,一是有利于攻击者计算出其它成对的e’和d’,而无需分解模数。解决办法只有一个,那就是不要共享模数n。

   RSA的小指数攻击。 有一种提高 RSA速度的建议是使公钥e取较小的值,这样会使加密变得易于实现,速度有
所提高。但这样作是不安全的,对付办法就是e和d都取较大的值。

   RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作。RSA是被研究得最广泛的公钥算法,从提出到现在已近二十年,经历了各种攻击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一。RSA的安全性依赖于大数的因子分解,但并没有从理论上证明破译RSA的难度与大数分解难度等价。即RSA的重大缺陷是无法从理论上把握它的保密性能如何,而且密码学界多数人士倾向于因子分解不是NPC问题。 RSA的缺点主要有:A)产生密钥很麻烦,受到素数产生技术的限制,因而难以做到一次一密。B)分组长度太大,为保证安全性,n 至少也要 600 bits 以上,使运算代价很高,尤其是速度较慢,较对称密码算法慢几个数量级;且随着大数分解技术的发展,这个长度还在增加,不利于数据格式的标准化。目前,SET( Secure Electronic Transaction )协议中要求CA采用比特长的密钥,其他实体使用比特的密钥。

关于CTF-RSA题目类型解题思路 RSA加密是一种非对称加密算法,由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)在1977年首次公开提出。RSA是它们三人姓氏的首字母组成的。2.1、算法基础 - 数论知识互质关系:如果两个正整数,除了 1 以外,没有其他公因数,那么这两个数是互质关系。例如,15 和 8 是互质的,因为 15 的因数是 1、3、5、15,8 的因数是 1、2、4、8,它们只有公因数 1。欧拉函数:对于正整数n,欧拉函数。 阅读详情

相关推荐

C语言实现RSA加解密算法(附完整源码)

C语言实现RSA加解密算法(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 1912

加密算法之RSA算法

  它是第一个既能用于数据加密也能用于数字签名的算法。它易于理解和操作,也很流行。算法的名字以发明者的名字命名:Ron Rivest, Adi Shamir 和Leonard Adleman。但RSA的安全性一直未能得到理论上的证明。它经历了各种攻击,至今未被完全攻破。一、RSA算法 :首先, 找出三个数, p, q, r, 其中 p, q 是两个相异的质数, r 是与 (p-1)(q-1

lianluck的专栏 1074

RSA加密算法(C语言实现)

这次轮到RSA加密算法了。RSA加密过程相对DES和MD5要简单很多,但作为现在还在使用的加密算法之一,它还是有需要认真思索的地方哒~ 首先是密钥对的生成: (1)选取两个大素数p和q(目前两个数的长度都接近512bit是安全的) (2)计算乘积n=p*q,Φ(n)=(p-1)(q-1),其中Φ(n)为n的欧拉函数(因为两素数乘积的欧拉函数等于两数分别减一后的乘积) (3)随机选取整数e(1<e<Φ(n))作为公钥d,要求满足e与Φ(n)的最大公约数为1,即两者互素 (4)用Eucli

我不是码农的博客~~~ 1万+

RSA加解密,c语言实现

gcc -o out 加密代码 -lssl -lcrypto

qq_40843427的博客 1352

RSA、ECDSA、EdDSA、SM2安全算法长度概述

本文介绍了五种常见数字签名算法的签名长度特性:1. RSA签名长度等于密钥长度(如2048位对应256字节);2. ECDSA签名为曲线坐标位数的两倍(如P-256曲线为64字节);3. EdDSA采用固定长度设计(Ed25519为64字节);4. SM2国密算法类似ECDSA(P-256曲线64字节);5. HMAC长度等于哈希输出(如SHA-256为32字节)。文章通过对比表格展示各算法的典型参数,并建议根据安全性、性能和兼容性需求选择签名长度,其中Ed25519等短签名适合资源受限场景,而更长密钥提供

MHD0815的博客 202

Java中的RSA算法加密与解密实战

Java加密扩展(Java Cryptography Extension,JCE)是Java的一个扩展库,它提供了一个全面的框架和一系列接口和类,用于实现加密、密钥生成和协商等安全机制。JCE最初于1998年随Java 1.4版本发布,目的是为Java语言提供一套完整的安全加密解决方案。随着安全需求的增长和加密算法的更新,JCE也在不断的版本迭代中得到增强和完善。JCE的设计目标是为开发者提供以下功能:- 加密数据,包括对称加密和非对称加密算法。

weixin_42594419的博客 1265

RSA算法概述及分析

2.1 RSA算法概述及分析 2.1.1 RSA算法数学基础 假设A想要通过一个不可靠的媒体接收B的一条私人讯息。 她可以用以下的方式来产生一个公钥和一个私钥: 1.随意选择两个大的质数p和q,p不等于q,计算N=pq。 2.根据欧拉函数,不大于N且与N互质的整数个数为(p-1)(q-1) 3.选择一个整数e与(p-1)(q-1)互质,并且e小于(p-1)(q-1) 4.用以下这个公式计算d:d...

小毛驴 3380

rsa解密(已知nec).py

rsa解密(已知nec).py

RSA签名算法概述及使用

一、加密算法种类 1、密钥  密钥,一般就是一个字符串或数字,在加密或者解密时传递给加密或解密算法,以使算法能够正确对明文加密或者对密文解密。 2、加密算法分类 大体上分为单向加密和双向加密。 2.1、单向加密   单向加密就是非可逆加密,就是不可解密的加密方法,由于其在加密后会生成唯一的加密串,故而经常用于检测数据传输过程中是否被修改。常见的单向...

558

超频玩家必看:TestMem5配置文件详解与内存稳定性测试实战(含黄金参数包)

本文详细解析了TestMem5(TM5)在内存超频稳定性测试中的核心价值与实战应用,特别针对DRAM颗粒特性提供黄金参数配置。通过anta777等专业配置的深度剖析,指导超频玩家精准定位内存故障,优化时序参数,实现性能与稳定性的完美平衡。涵盖从初级验证到极限压测的全流程方案,是硬件发烧友提升系统稳定性的必备指南。

weixin_29198045的博客 1826

NVIDIA DGX Spark实战指南:从开箱到AI模型高效部署

本文详细介绍了NVIDIA DGX Spark的开箱体验、硬件架构及AI模型高效部署实战指南。从1 PetaFLOP算力的迷你设备到Grace Blackwell超级芯片的深度解析,再到五分钟快速上手指南和大模型部署技巧,帮助开发者充分利用这款全球最小AI超级计算机的性能优势。

weixin_29239279的博客 1366

公开密钥加密算法RSA的理论概述

RSA加密算法的最大优点就是不需要对密钥通信进行保密,所需传输的只有公开密钥,这样就省去了一条开销很大的密钥传输信道。其保密性强,密钥管理方便,并且具有数字签名、认证和签别等多种功能,特别适合于现代保密通信的需要。大多数使用公钥密码进行加密和数字签名的产品和标准使用的都是RSA算法。RSA的安全性是基于大数因子分解的困难性。目前一般认为RSA需要1024位以上的字长才有安全保障。由于RSA所采用的模幂运算耗时太多,因此它通常只能用于加密少量数据或者加密密钥。

FPGA/MATLAB学习教程/源码/项目合作开发 4057

【Unity】Unity性能分析解决方案——UPR

由Unity中国团队提供的一套性能优化解决方案,其是一系列性能工具的集合,并可将收集的数据进行可视化。

Davidorzs的博客 1009

RSA非对称加密算法概述

非对称加密算法-RSA算法   加密算法分为对称加密算法和非对称加密算法,其中非对称加密算法作为计算机通信安全的基石,在保证数据安全方面起着重要的作用。而相对于对称加密算法的易理解性,非对称加密算法存在一定的难度。下面通过对RSA算法的剖析,让我们更好的理解非对称加密算法的原理。 一、对称加密算法和非对称加密算法 1、对称加密算法   对称加密算法:加密和解密都使用同样规则(密钥)的算法。   (1)、A选择某一种规则对信息进行加密;   (2)、B使用同一规则(逆规则)对信息进行解密; 2、

ShyTan的博客 865

5种主流触觉传感器对比:GelSight、DIGIT、Taxim、GelSlim和TACTO如何选?

本文深度解析了GelSight、DIGIT、Taxim、GelSlim和TACTO五款主流触觉传感器的技术原理与核心特性。通过对比视觉传感与电学传感两大技术路径,为机器人灵巧抓取、精密检测等应用场景提供清晰的选型决策指南,帮助开发者根据项目需求在分辨率、响应速度、集成度与成本之间找到最佳平衡。

Black的专栏 933

PotPlayer终极画质调校:深入MadVR渲染器设置,让你的显示器发挥100%潜力

本文深入探讨了如何通过MadVR渲染器优化PotPlayer的画质设置,充分发挥高端显卡和显示器的潜力。从色彩空间匹配、色深优化到HDR元数据处理,提供了一套完整的配置指南,帮助用户实现影院级视觉体验。特别适合拥有NVIDIA RTX或AMD RX系列显卡的用户进行精细调校。

weixin_42530458的博客 604

RSA加密算法概述流程+伪代码

又称素数,一个大于1的正整数,除了1和它自身外,不能被其他整数整除。互质关系:如果两个正整数,除了1以外没有其他公因子,就称这两个数是互质关系。

鱼干的博客 1674

【Unity 实用工具篇】 | Book Page Curl 快速实现翻书效果

游戏和应用开发中,真实感的交互设计能显著提升用户体验。Unity3D图书翻页效果插件为开发者提供了一种便捷方式,可在项目中实现高度拟真的书籍翻页动画。 本文介绍该插件的快速使用方法,涵盖从基础导入到自动翻页效果创建的全过程,让我们快速实现翻页效果。

努力前行,总会成为自己心中的那道光 1万+

密码学专题 非对称加密算法指令概述 RSA

非对称加密算法也称为公开密钥算法,其解决了对称加密算法密钥需要预分配的难题,使得现代密码学的研究和应用取得了重大发展。 非对称加密算法的基本特点如下: 加密密钥和解密密钥不相同; 密钥对中的一个密钥可以公开(称为公开密钥); 根据公开密钥很难推算出私人密钥。 根据非对称加密算法的这些特点,我们可以使用非对称加密算法进行数字签名、密钥交换及数据加密等。但是,由于非对称加密算法的加密速度相对于对称加密算法来说慢很多,所以一般不直接用于大量数据的加密,而是用于数据加密密钥的交换和数字签名。并非所

CHYabc123456hh的博客 1750

智能车浅谈——手把手让车跑起来(电磁篇)

手把手让你的电磁车上路。

qq_41954556的博客 7万+

Ultralytics 框架中 model.predict() 返回的 results 对象的详细解析

通过掌握 results 对象的使用方法,您可以快速实现模型部署、数据分析与可视化。

浩瀚之水的专栏 749

RSA加密算法概述和证明正确性

 RSA算法大概描述: 密钥产生: 选择p,q(p,q不相等且均为素数); 计算n=p*q ; 计算 ; 选择整数e,满足条件:gcd(,e)=1; 1 ; 计算 ; 公钥PU={ e,n } ; 私钥PR={ d,n } ; 加密过程: 明文:M  密文:C=  解密过程: 密文:C 明文:M=   2. 证明题目分析: 假设RSA算

anhuibozhoushatu的专栏 4806

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Classical algorithm | RSA算法原理解析

此博文主要介绍RSA算法的数学基础,具体算法步骤由于篇幅问题会酌情简略 最近挺多人问我RSA算法的,但由于所需的数学知识有好几个而不能当场详细说明,因为在此写一篇博文: RSA算法的原理理解,需要先从4个数学知识开始说明,: 一:欧拉定理 如果两个正整数a和n互质,则n的欧拉函数 φ(n) 可以让下面的等式成立: 也就是说,a的φ(n)次方被n除的余数为1。或者说,a的φ(n)次

sweeterer的博客 1万+

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Go-RSA加密解密详解与代码_go rsa

W.Diffie和Hellman发表了著名的文章《密码学的新方向》首次提出了公钥密码算法的思想。公钥密码体制为密码学的发展提供了新的理论和技术思想,一方面公钥密码算法是建立在数学函数基础上的,而不是建立在字符或位方式的操作上的;另一方面公钥密码算法是以非对称的形式使用加密密钥和解密密钥,这两个密钥的使用对密钥管理、认证等都有着深刻的实际意义。可以说,公钥密码体制的出现在密码学发展史上是一次质的飞跃。1978年,Rivest,Shamir和A。

2401_86437164的博客 1175

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

RSA算法总结

** # RSA算法总结 ** 众所周知,现代密码体制中常用的加密算法无非就是对称加密和公钥加密,对称加密,加解密所用的密钥是相同的,安全性主要依赖于密钥的保密性;而在公钥加密中,发送方和接收方各自拥有一对公钥和私钥,根据应用的不同,发送者使用的密钥也会不相同,如果说发送者要把自己的信息发送给接收者,那么发送方需要利用接收方的公钥对要发送的信息进行加密,接收方利用自己的私钥进行解密,从而实现信息的传输;但是当发送方用于数字签名进行身份验证的时候,利用的则是自己的私钥。 在公钥加密中最为经典的莫过于R

qq_43270444的博客 1796

RSA密码原理详解及算法实现(六步即可掌握)

小白也能快速理解的RSA算法原理讲解,附python代码

weixin_62387234的博客 1万+
上一篇: 椭圆曲线密码算法介绍
下一篇: 素数检验法
iiprogram
博客等级 码龄25年 1068粉丝 1515原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值