RSA算法

奇妙的安全旅行之RSA算法 hi,大家好,我是开发者FTD。今天我们开始介绍非对称加密算法。非对称加密算法区别于对称加密算法的主要特点是,非对称加密算法有两个密钥:公钥 (public key) 和私钥 (private key)。公钥和私钥是一对密钥,如果用公钥对数据加密,那么只能用对应的私钥解密;相同的,如果用私钥对数据加密,只能用对应的公钥进行解密。因为加密和解密用的是不同的密钥,所以将这种加密算法称为非对称加密。 非对称加密算法的安全性好,由于有两个密钥,所以它不需要交换比较重要的私钥,只需要交换对外公开的公钥即可,它消除了用 阅读详情

RSA 算法

当前最著名、应用最广泛的公钥系统RSA 是在1978 年,由美国麻省理工学院(MIT) 的Ron Rivest, Adi Shamir 和Leonard Adleman 在题为《获得数字签名和公开钥密码系统的方法》的论文中提出的。它是一个基于数论的非对称( 公开钥) 密码体制,是一种分组密码体制。其名称 来自于三个发明者的姓名首字母。 它的安全性是基于大整数素因子分解的困难性,而大整数因子分解问题是数学上的著名难题,至今没有有效的方法予以解决,因此可以确保RSA 算法的安全性。 RSA 系统是公钥系统的最具有典型意义的方法,大多数使用公钥密码进行加密和数字签名的产品和标准使用的都是RSA 算法。

RSA 算法是第 一个既能用于数据加密也能用于数字签名的算法,因此它为公用网络上信息的加密和鉴别提供了一种基本的方法。它通常是先生成一对RSA 密钥,其中之一是保密密钥,由用户保存;另一个为公开密钥,可对外公开,甚至可在网络服务器中注册,人们用公钥加密文件发送给个人,个人就可以用私钥解密 接受。为提高保密强度,RSA 密钥至少为500 位长,一般推荐使用1024 位。
该算法基于下面的两个事实, 这些事实保证了RSA 算法的安全有效性:
1. 已有确定一个数是不是质数的快速算法;
2.
尚未找到确定一个合数的质因子的快速算法。

工作原理

1) 任意选取两个不同的大质数 p 和 q ,计算乘积 r=p*q ;
2)
任意选取一个大整数 e , e 与 (p-1)*(q-1) 互质,整数 e 用做加密密钥。注意: e 的选取是很容易的,例如,所有大于 p 和 q 的质数都可用。
3)
确定解密密钥 d : d * e ≡ 1 (mod (p -1)(q -1)) 根据 e 、 p 和 q 可以容易地计算出 d 。
4)
公开整数 r 和 e ,但是不公开 d ;
5)
将明文 P ( 假设 P 是一个小于 r 的整数 ) 加密为密文 C ,计算方法为:
C = P^e modulo r
6)
将密文 C 解密为明文 P ,计算方法为:
P = C^d modulo r
然而只根据 r 和 e (不是 p 和 q )要计算出 d 是不可能的。因此,任何人都可对明文进行加密,但只有授权用户(知道 d )才可对密文解密。

运算符号的解释 :

≡ 就是≡

余数 (≡)
同余
一般来说就是取余数
a≡b(mod c)
就是说 a 除以 c 所的余数和 b 除以 c 所得的余数相同 ,
换句话说 a-b 能整除 c
可以表示 c | a-b

数学原理

定理
若  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,  所以这个过程确实能做到编码解码的功能..... 

示例

为了说明该算法的工作过程, 我们下面给出一个简单例子, 显然我们在这只能取很小的数字,但是如上所述,为了保证安全,在实际应用上我们所用的数字要大的多得多。
例:选取p=3, q=5 ,则r=15 ,(p-1 )* (q-1 )=8 。选取e=11 (大于p 和q 的质数),通过d * 11 = 1 modulo 8 ,计算出d =3 。
假定明文为整数13 。则密文C 为
   C = P^e modulo r
    = 13^11 modulo 15
    = 1,792,160,394,037 modulo 15
    = 7
复原明文P 为:
   P = C^d modulo r
    = 7^3 modulo 15
    = 343 modulo 15
    = 13
因为e 和d 互逆,公开密钥加密方法也允许采用这样的方式对加密信息进行" 签名" ,以便接收方能确定签名不是伪造的。 


两个在不安全信道中通信的人,假设为Alice (收信者)和Bob (发信者),他们希望能够安全的通信而不被他们的敌手Oscar 破坏。Alice 想到了一种办法,她使用了一种锁(相当于公钥),这种锁任何人只要轻轻一按就可以锁上,但是只有Alice 的钥匙(相当于私钥)才能够打开。然后 Alice 对外发送无数把这样的锁,任何人比如Bob 想给她寄信时,只需找到一个箱子,然后用一把Alice 的锁将其锁上再寄给Alice ,这时候任何人(包括 Bob 自己)除了拥有钥匙的Alice ,都不能再打开箱子,这样即使Oscar 能找到Alice 的锁,即使Oscar 能在通信过程中截获这个箱子,没有 Alice 的钥匙他也不可能打开箱子,而Alice 的钥匙并不需要分发,这样 Oscar 也就无法得到这把“ 私人密钥” 。

优点

RSA 算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作。RSA 是被研究得最广泛的公钥算法,从提出到现在已近二十年,经历了各种攻击的考验,逐 渐为人们接受,普遍认为是目前最优秀的公钥方案之一。该算法的加密密钥和加密算法分开,使得密钥分配更为方便。它特别符合计算机网络环境。对于 网上的大量用户,可以将加密密钥用电话簿的方式印出。如果某用户想与另一用户进行保密通信,只需从公钥簿上查出对方的加密密钥,用它对所传送的信息加密发 出即可。对方收到信息后,用仅为自己所知的解密密钥将信息脱密,了解报文的内容。由此可看出,RSA 算法解决了大量网络用户密钥管理的难题,这是公钥密码 系统相对于对称密码系统最突出的优点。

缺点

1) 产生密钥很麻烦,受到素数产生技术的限制,因而难以做到一次一密。
2)
安全性, RSA 的安全性依赖于大数的因子分解,但并没有从理论上证明破译RSA 的难度与大数分解难度等价,而且密码学界多数人士倾向于因子分解不是NPC 问题。目 前,人们已能分解140 多个十进制位的大素数,这就要求使用更长的密钥,速度更慢;另外,目前人们正在积极寻找攻击RSA 的方法,如选择密文攻击,一般攻击者是将某一信息作一下伪装(Blind) ,让拥有私钥的实体签署。然后,经过计算就可得到它所想要的信息。实际上,攻击利用的都是同一个弱点,即存在这 样一个事实:乘幂保留了输入的乘法结构:
  ( XM )d = Xd *Md mod n
前面已经提到,这个固有的问题来自于公钥密码系统的最有用的特征-- 每个人都能使用公钥。但从算法上无法解决这一问题,主要措施有两条:一条是采用好的公钥协议,保证工作过程中实体不对其他实体任意产生的信息解密,不对自己一无所知的信息签名;另一条是决不对陌生人送来的随机文档签名,签名时首先使用One-Way Hash Function 对文档作HASH 处理,或同时使用不同的签名算法。除了利用公共模数,人们还尝试一些利用解密指数或φ (n )等等攻击.
3)
速度太慢, 由于RSA 的分组长度太大,为保证安全性,n 至少也要 600 bitx 以上,使运算代价很高,尤其是速度较慢,较对称密码算法慢几个数量级;且随着大数分解技术的发展,这个长度还在增加,不利于数据格式的标准化。目前,SET(Secure Electronic Transaction) 协议中要求CA 采用2048 比特长的密钥,其他实体使用1024 比特的密钥。为了速度问题, 目前人们广泛使用单, 公钥密码结合使用的方法, 优缺点互补: 单钥密码加密速度快, 人们用它来加密较长的文件, 然后用RSA 来给文件密钥加密, 极好的解决了单钥密码的密钥分发问题。

公钥加密算法中使用最广的是RSA 。RSA 算法研制的最初理念与目标是努力使互联网安全可靠,旨在解决DES 算法秘 密密钥的利用公开信道传输分发的难题。而实际结果不但很好地解决了这个难题;还可利用RSA 来完成对电文的数字签名以抗对电文的否认与抵赖;同时还可以利 用数字签名较容易地发现攻击者对电文的非法篡改,以保护数据信息的完整性。目前为止,很多种加密技术采用了RSA 算法,该算法也已经在互联网的许多方面得 以广泛应用,包括在安全接口层(SSL )标准(该标准是网络浏览器建立安全的互联网连接时必须用到的)方面的应用。此外,RSA 加密系统还可应用于智能 IC 卡和网络安全产品。
但目前RSA 算法的专利期限即将结束,取而代之的是基于椭圆曲线的密码方案(ECC 算法)。较之于RSA 算法,ECC 有其相对优点,这使得ECC 的特性更适合当今电子商务需要快速反应的发展潮流。此外,一种全新的量子密码也正在发展中。

 

公钥密码系统及RSA公钥算法 摘要: 本文简单介绍了公开密钥密码系统的思想和特点,并具体介绍了RSA算法的理论基础,工作原理和具体实现过程,并通过一个简单例子说明了该算法是如何实现。在本文的最后,概括说明了RSA算法目前存在的一些缺点和解决方法。 关键词: 公钥密码体制 , 公钥 , 私钥 , RSA 中图分类号:TP309.7 §1引言 随着计算机联网的逐步实现,Internet前景越来越美好,全球经济发展正在进入信息经济时 阅读详情

相关推荐

密码学之RSA算法

RSA算法由Ron Rivest、Adi Shamir和Leonard Adleman于1977年提出,得名于他们姓氏的首字母。最初设计用于解决密钥分发问题,现已广泛应用于数据加密、数字签名等。fill:#333;color:#333;color:#333;fill:none;1976年 Diffie-Hellman密钥交换算法1977年 RSA算法提出1983年 MIT申请专利2000年代 分布式计算和量子计算理论挑战RSA安全性RSA算法以其安全性和广泛的应用在现代密码学中占据重要地位。

零度°C的博客 6371

RSA加密算法

前言 公钥加密算法(RSA)是首个适用以签名作为加密的算法。被用于银行网上支付、电商交易。 RSA是Rivest、Shamir、Adleman三位数学家的缩写。其数学原理是大整数因数分解极其苦难的原因设计的一种算法。 蒙哥马利幂运算 蒙哥马利幂运算是为了快速计算abmod(c)a^bmod(c)abmod(c)的一种算法,是RSA加密算法核心之一,用于求私钥值d(d=abmod(c))d(d=a^b mod (c))d(d=abmod(c)),其中mod求余符号等价于python里面的%符号。 abmod(

王斯的博客 1万+

RSA算法基础

算法笔记:RSA算法基础RSA算法基础简介算法基础算法详解大整数表示素数产生Euclid算法模幂算法Montgomery算法RSA算法实例RSA-CRT RSA算法基础 简介 RSA算法由Ron Rivest、Adi Shamir和Leonard Adleman于1977年提出,算法名字由三人名字开头字母组成。该算法是当前公钥密码体系中的算法基础。RSA算法的安全性依赖于“大整数因字分解问题是NP-hard的问题”这一假设。本文简单介绍RSA算法的数学基础,以及相关的一些算法知识。 算法基础 RSA算法可以

云楼主的博客 1364

【编程开发】非对称加密过程详解(基于RSA非对称加密算法实现)

1、非对称加密过程: 假如现实世界中存在A和B进行通讯,为了实现在非安全的通讯通道上实现信息的保密性、完整性、可用性(即信息安全的三个性质),A和B约定使用非对称加密通道进行通讯,具体过程如下: 说明: 国内目前使用双证书体...

weixin_30496751的博客 1545

RSA算法优化

RSA算法优化 1.大数乘法 2.模乗优化 3.剩余定理(孙子定理) 4.RSA加解密 5.python的RSA计算优化

wdxzkp的专栏 6028

rsa 算法的C实现

rsa算法的C语言实现,该程序中密钥p和q是自动生成的两个大素数。随机产生一个e,然后自动计算出d.从你所给的路径中对文件进行加密解密操作。

RSA算法详解

RSA算法是目前理论和实际应用中最为成熟的和完善的公钥密码体制。RSA用来解决对称密码的密钥分发问题。还可以用来进行数字签名来保证信息的否定与抵赖,利用数字签名较容易发现攻击者对信息的非法篡改以保证信息的完整性。 RSA的安全性依赖于大整数的因子分解的困难性,为了满足信息安全强度的需求,密钥的位数都比较多(521位甚至更高),导致幂模运算的运算量极大,成为提高RSA算法加解密速度的瓶颈。 RSA存在的问题: 1.产生密钥非常麻烦,受制于当前素数产生技术的限制,很难做到一次一密。 2.安全性。RSA的安全性依

qq_43539854的博客 3万+

STM32F103C8T6+HX711实战:从零打造智能体重秤(附OLED显示与语音播报)

本文详细介绍了基于STM32F103C8T6微控制器和HX711称重模块,从零构建智能体重秤的完整实战教程。内容涵盖硬件选型、系统架构、驱动编写、数据滤波校准算法,并实现了OLED显示与语音播报功能。该项目是嵌入式学习的综合性实践,尤其适合作为毕业设计课题,帮助开发者掌握传感器应用、数据处理及人机交互等核心技能。

weixin_28285943的博客 517

8、RSA 算法

RSA加密、签名

安全学习笔记 1万+

从FOC到你的无人机:深入浅出讲透Clark/Park变换在无刷电机控制中的核心作用

本文深入解析Clark变换与Park变换在无刷电机控制中的核心作用,揭示其如何将三相交流电转换为旋转坐标系下的直流量,实现无人机电机的高效精准控制。通过STM32硬件加速和工程实践案例,展示这对数学变换如何成为FOC算法的神经中枢,大幅提升系统响应速度和能效表现。

weixin_42628941的博客 169

成本中心(CO)和利润中心(PCA)是管理会计模块的核心组件

SAP中成本中心(CO)和利润中心(PCA)凭证处理存在差异:①外部交易(如费用支付、销售)会生成FI借贷凭证;②内部成本分摊和转移仅产生CO/PCA管理凭证,通过次级成本要素或利润中心转移科目记录,不涉及FI模块。核心区别在于是否涉及企业实际收支:实际收支触发FI凭证,内部核算仅生成管理会计凭证。系统通过这种机制实现财务会计与管理会计的集成与分离。

金牌架构师 1127

RSA算法简介

RSA算法简介 RSA算法是一种非对称性加密算法,现在算是最具有影响力的算法,简单来说RSA算法运用了"一个大整数进行因式分解具备一定的难度"这个数学知识来进行加密,对一个极大整数做因式分解越难,那么想要破解加密过后的密码就越难。在了解RSA算法之前,先要了解以下几个知识点: 一、互质关系 __如果两个正整数,除了1以外,没有其他公因子,我们就称这两个数是互质关系(coprime)。__比如,15和32没有公因子,所以它们是互质关系。这说明,不是质数也可以构成互质关系。 关于互质关系,不难得到以下结论:

qq_43401941的博客 2825

多后端系统统一聚合与智能分流:用 Multi Origin Composition 与 Routing 打造一套可扩展的 SAP Gateway 架构

本文针对企业级SAP集成场景,详细介绍了如何利用SAP Gateway的MOC(多源组合)和Routing功能实现多后端系统的智能路由与数据聚合。通过系统别名配置、用户角色绑定和主机名分流等机制,可实现按用户、按域名的精确路由。文章还提供了配置清单、性能优化建议和常见问题解决方案,帮助工程师落地多后端OData服务的最佳实践。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 186

【算法】Java实现RSA算法

RSA(Rivest-Shamir-Adleman)是一种非对称加密算法,它是目前最广泛使用的公钥加密算法之一。RSA算法是由三位密码学家(Ron Rivest、Adi Shamir、Leonard Adleman)在1977年提出的。RSA算法基于大数因子分解的数学难题,它使用一对密钥:公钥和私钥。公钥用于加密数据,私钥用于解密数据。公钥可以公开分享给其他人,而私钥必须保密。选择两个不同的大素数p和q。计算n = p * q,n被称为模数(modulus)。

分享Java硬核干货 1万+

Windows11安装配置openclaw+deepseek(大龙虾)

密码可以随便设置(注意wsl系统本质上是linux系统,设置密码系统是不会像windows一样显示*点位符的),输入密码后敲回车再次输入密码,输入后敲回车。如果不小心关闭这个界面,可以再次进入powershell,输入wsl进行系统。在powershell中输入:curl -fssL https://openclaw.ai/install.sh | bash。下面是否通过第3方平台和openclaw交互,我选择j最后一项:skip for now。到下面这一步,可以通过键盘的左箭头选择Yes.

mahailiang的专栏 344

3、提升管壳式换热器能效:双螺旋盘管的应用研究

本研究探讨了在管壳式热交换器中应用双螺旋盘管以提升能效的可行性。通过实验对比双螺旋与单螺旋盘管的热传递效率,结果显示双螺旋盘管达到54.33%的效率,显著优于单螺旋的48.88%。双螺旋结构不仅增大了换热面积,还因产生剪切应力而减少结垢,延长运行周期。采用NTU方法评估热传递性能,验证了该设计在工业应用中的高效性与实用性,建议在制冷、空调、石油精炼等领域推广使用。

k8s6orchestrator的博客 107
上一篇: 字符串转换成日期时间格式
下一篇: RSA--维基百科
wangzhi_821
博客等级 码龄21年 19粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值