介绍: RSA算法是1978年由 R.Rivest、A.Shamir、L.Adleman提出的一种用数论构造的、也是迄今为止理论上最为成熟、完善的公钥密码体,该体制已得到广泛的应用。

算法描述:

1. 密钥的产生

(1) 选两个保密的两个大素数 p 和 q 。
(2) 计算 n=p*q,φ(n) = (p-1)*(q-1),其中,φ(n)是n的欧拉函数值 (即满足和n互素的在[1,n)区间的数的个数,定理[ φ(m*n) = φ(m)*φ(n),仅当m,n互素时]);
(3) 选一个整数 e ,满足 1 < e < φ(n),且 gcd(φ(n),e) = 1;
(4) 计算 d,满足 d*e ≡ 1 mod φ(n),即 d 是 e 在摸φ(n) 下的乘法逆元,因e与φ(n)互素,由模运算可知,他的乘法逆元一定存在[贝祖等式:s*a + t*b = (a,b),此时(e,φ(n))=1,因此必然存在逆元];
(5) 以 {e,n} 为公钥,以 {d,n} 为私钥。

2.加密

   加密时首先将明文比特串分组,使得每个分组对应的十进制数小于n,即分组长度小于log2(n)(目的应该在于解密时答案的唯一性,即模余值)。然后对每个明文分组m,做加密运算,即

         c ≡ m^e mod(n)

4. 解密

  对密文分组的解密运算为

         m ≡ c^d mod(n)

其中的原理易于理解,利用欧拉定理 $a^{φ(m)} ≡ 1 (mod m)$ 以及 $d*e ≡ 1 mod φ(n)$可以得出结论。

攻击:

  对 n 进行暴力分解出 p 和 q,从而轻易的到密钥 e;本地的工具有windows上的RSATool2v17,可分解256 比特的n,yafu CTF比赛中遇到难以分解的 n 可以试一下,rsa-wiener-attack 用于当e过大或过小时;而目前1024~2048 比特之间的RSA是安全的;

  共模攻击、两大数 n1 和 n2 用相同大素数公约数和低指数攻击;

  重复加密攻击:若 m{e{t+1}} ≡ c(mod n),即 (m{et})^e ≡ c(modn),则有 m{et} ≡ m(mod n) ,即 c{e{t-1}} ≡ m(mod n) ;这种攻击只有在t较小的时候才是可行的,和pq的取值有关。具体如下:

     ce≡(me)e≡m{e^2}(mod n)

     c{e2}≡(me){e2}≡m{e^3}(mod n)

    ...

     c{e{t-1}}≡(me){e{t-1}}≡m{e^t}(mod n)

     c{et}≡(me){et}≡m{e^{t+1}}(mod n)

重复对以e密文c进行加密,并且与 c 进行比对,若一致,得到t值,则攻击成功。

之前看过的一篇关于ctf中对于rsa破解的技巧分享,感觉很受用 [【技术分享】CTF中RSA的常见攻击方法](https://www.anquanke.com/post/id/84632)

公钥密码RSA算法记录的更多相关文章

  1. RSA算法记录----摘抄

    RSA算法原理(一)   "公钥加密算法". 因为它是计算机通信安全的基石,保证了加密数据不会被破解.你可以想象一下,信用卡交易被破解的后果. 进入正题之前,我先简单介绍一下,什么 ...

  2. 实现 RSA 算法之改进和优化(第三章)(老物)

    第三章 如何改进和优化RSA算法 这章呢,我想谈谈在实际应用出现的问题和理解. 由于近期要开始各种忙了,所以写完这章后我短时间内也不打算出什么资料了=- =(反正平时就没有出资料的习惯.) 在讲第一章 ...

  3. 跨越千年的RSA算法

    转载自http://www.matrix67.com/blog/archives/5100 数论,数学中的皇冠,最纯粹的数学.早在古希腊时代,人们就开始痴迷地研究数字,沉浸于这个几乎没有任何实用价值的 ...

  4. RSA算法使用介绍

    http://www.cnblogs.com/AloneSword/p/3326750.html RSA是目前最有影响力的公钥加密算法,该算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但那 ...

  5. RSA算法优化

    RSA算法优化 大数乘法 模乗优化 剩余定理(孙子定理) RSA加解密 python的RSA计算优化 #-*- coding: utf-8 -*- ''' /********************* ...

  6. RSA算法原理——(3)RSA加解密过程及公式论证

    上期(RSA简介及基础数论知识)为大家介绍了:互质.欧拉函数.欧拉定理.模反元素 这四个数论的知识点,而这四个知识点是理解RSA加密算法的基石,忘了的同学可以快速的回顾一遍. 一.目前常见加密算法简介 ...

  7. [转] 带你彻底理解RSA算法原理

    http://blog.csdn.net/dbs1215/article/details/48953589 1. 什么是RSA RSA算法是现今使用最广泛的公钥密码算法,也是号称地球上最安全的加密算法 ...

  8. [转载]RSA算法详解

    原文:http://www.matrix67.com/blog/archives/5100 数论,数学中的皇冠,最纯粹的数学.早在古希腊时代,人们就开始痴迷地研究数字,沉浸于这个几乎没有任何实用价值的 ...

  9. 一个基于RSA算法的Java数字签名例子

    原文地址:一个基于RSA算法的Java数字签名例子 一.前言: 网络数据安全包括数据的本身的安全性.数据的完整性(防止篡改).数据来源的不可否认性等要素.对数据采用加密算法加密可以保证数据本身的安全性 ...

随机推荐

  1. java中用swing做一个windows计算器

    目录 主函数 普通计数器 科学计算器 注意: @(java中用swing做一个windows计算器) 前言: 来看这篇教程估计都是java课程设计吧,现在已经没有公司很少使用swing组件了,java ...

  2. git冲突时解决方法

    在多人协作中,使用git时有冲突是必然的,当git pull 下来代码的时候会出现  <<<<<<< HEAD这些东西,我也没有详细了解过这些,只是知道删除一 ...

  3. git使用笔记1:结合Github远程仓库管理项目

    git是一个十分好用的版本控制工具,我们经常在本地使用git进行项目开发,Git 并不像 SVN 那样有个中心服务器,如果想要通过 Git 分享你的代码或者与其他开发人员合作,就需要将数据放到一台其他 ...

  4. SQL SERVER数据库的简单介绍

    一.数据库技术的发展 数据库技术是应数据管理任务的需求而产生的,先后经历了人工管理.文件系统.数据库系统等三个阶段. 二.关系型数据库 SQL Server属于关系型数据库. 关系模型 以二维表来描述 ...

  5. x宝23大洋包邮的老式大朝华MP3播放器简单评测

    (纯兴趣测评,非广告) 最近逛X宝,看到了这个古董级MP3播放器居然还在售,于是脑抽+情怀泛滥买了一个. 然后呢,从遥远的深圳跨越好几千公里邮过来了这个玩意: 那节南孚5号电池是我自己的,是为了对比一 ...

  6. Arduino入门笔记(5):1602液晶实验(实现时钟)

    转载请注明:@小五义 http://www.cnblogs.com/xiaowuyi 欢迎加入讨论群 64770604 一.本次实验所需器材 1.Arduino板 https://item.taoba ...

  7. Cocos Creator—优化首页打开速度

    Cocos Creator是一个优秀的游戏引擎开发工具,很多地方都针对H5游戏做了专门的优化,这是我比较喜欢Cocos Creator的一点原因. 其中一个优化点是首页的加载速度,开发组为了加快首页的 ...

  8. .NET 基金会完成第一次全面改选

    .NET基金会是一个独立的组织,支持.NET社区和开源,旨在拓宽和加强.NET生态系统和社区.这可以通过多种方式完成,包括项目指导,指导,法律和营销帮助,技术和财务支持设置等,2014年微软组织成立. ...

  9. 引入外部 CDN失效时--怎么加载本地资源文件(本文以jquery为例)

    相信大家都使用过CDN静态资源库,比如下面 CDN官方静态资源库:https://cdnjs.com/ 七牛前端公开库:http://staticfile.org   (vue,react,nl都有) ...

  10. Windows10系统:任务栏中电池图标消失问题的解决方法

    一.问题: 电池图标对我们来说,基本是没有什么操作对它进行的,但这并不代表它不重要. 持续充电的时候自然觉得没什么,但一旦电脑脱离充电状态,我们还是会经常性地把鼠标放在电池图标上.只有清楚地了解电脑的 ...