1. 什么是RSA

RSA算法是现今使用最广泛的公钥密码算法,也是号称地球上最安全的加密算法。在了解RSA算法之前,先熟悉下几个术语 
根据密钥的使用方法,可以将密码分为对称密码和公钥密码 
对称密码:加密和解密使用同一种密钥的方式 
公钥密码:加密和解密使用不同的密码的方式,因此公钥密码通常也称为非对称密码。

2. RSA加密

RSA的加密过程可以使用一个通式来表达

也就是说RSA加密是对明文的E次方后除以N后求余数的过程。就这么简单?对,就是这么简单。 
从通式可知,只要知道E和N任何人都可以进行RSA加密了,所以说E、N是RSA加密的密钥,也就是说E和N的组合就是公钥,我们用(E,N)来表示公钥

不过E和N不并不是随便什么数都可以的,它们都是经过严格的数学计算得出的,关于E和N拥有什么样的要求及其特性后面会讲到。顺便啰嗦一句E是加密(Encryption)的首字母,N是数字(Number)的首字母

3. RSA解密

RSA的解密同样可以使用一个通式来表达

也就是说对密文进行D次方后除以N的余数就是明文,这就是RSA解密过程。知道D和N就能进行解密密文了,所以D和N的组合就是私钥

从上述可以看出RSA的加密方式和解密方式是相同的,加密是求“E次方的mod N”;解密是求“D次方的mod N” 
此处D是解密(Decryption)的首字母;N是数字(Number)的首字母。

4. 生成密钥对

既然公钥是(E,N),私钥是(D,N)所以密钥对即为(E,D,N)但密钥对是怎样生成的?步骤如下:

  1. 求N
  2. 求L(L为中间过程的中间数)
  3. 求E
  4. 求D

4.1 求N

准备两个质数p,q。这两个数不能太小,太小则会容易破解,将p乘以q就是N

4.2 求L

L 是 p-1 和 q-1的最小公倍数,可用如下表达式表示

4.3 求E

E必须满足两个条件:E是一个比1大比L小的数,E和L的最大公约数为1 
用gcd(X,Y)来表示X,Y的最大公约数则E条件如下:

之所以需要E和L的最大公约数为1是为了保证一定存在解密时需要使用的数D。现在我们已经求出了E和N也就是说我们已经生成了密钥对中的公钥了。

4.4 求D

数D是由数E计算出来的。D、E和L之间必须满足以下关系:

只要D满足上述2个条件,则通过E和N进行加密的密文就可以用D和N进行解密。 
简单地说条件2是为了保证密文解密后的数据就是明文。 
现在私钥自然也已经生成了,密钥对也就自然生成了。 
小结下:

5 实践下吧

我们用具体的数字来实践下RSA的密钥对对生成,及其加解密对全过程。为方便我们使用较小数字来模拟。

5.1 求N

我们准备两个很小对质数, 
p = 17 
q = 19 
N = p * q = 323

5.2 求L

L = lcm(p-1, q-1)= lcm(16,18) = 144 
144为16和18对最小公倍数

5.3 求E

求E必须要满足2个条件:1 < E < L ,gcd(E,L)=1 
即1 < E < 144,gcd(E,144) = 1 
E和144互为质数,5显然满足上述2个条件 
故E = 5

此时公钥=(E,N)= (5,323)

5.4 求D

求D也必须满足2个条件:1 < D < L,E*D mod L = 1 
即1 < D < 144,5 * D mod 144 = 1 
显然当D= 29 时满足上述两个条件 
1 < 29 < 144 
5*29 mod 144 = 145 mod 144 = 1 
此时私钥=(D,N)=(29,323)

5.5 加密

准备的明文必须时小于N的数,因为加密或者解密都要mod N其结果必须小于N 
假设明文 = 123 
则 密文=明文EmodN=1235mod323=225密文=明文EmodN=1235mod323=225

5.6 解密

明文=密文DmodN=22529mod323=123明文=密文DmodN=22529mod323=123 
解密后的明文为123。

好了至此RSA的算法原理已经讲解完毕,是不是很简单?

彻底理解RSA算法原理的更多相关文章

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

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

  2. 带你彻底理解RSA算法原理,很简单的

    1. 什么是RSA RSA算法是现今使用最广泛的公钥密码算法,也是号称地球上最安全的加密算法. 在了解RSA算法之前,先熟悉下几个术语 根据密钥的使用方法,可以将密码分为 对称密码 和 公钥密码 对称 ...

  3. (转)RSA算法原理

    RSA算法原理(二)   作者: 阮一峰 日期: 2013年7月 4日 上一次,我介绍了一些数论知识. 有了这些知识,我们就可以看懂RSA算法.这是目前地球上最重要的加密算法. 六.密钥生成的步骤 我 ...

  4. RSA算法原理——(2)RSA简介及基础数论知识

    上期为大家介绍了目前常见加密算法,相信阅读过的同学们对目前的加密算法也算是有了一个大概的了解.如果你对这些解密算法概念及特点还不是很清晰的话,昌昌非常推荐大家可以看看HTTPS的加密通信原理,因为HT ...

  5. 【来龙去脉系列】RSA算法原理

    如果你问我,哪一种算法最重要? 我可能会回答"公钥加密算法". 因为它是计算机通信安全的基石,保证了加密数据不会被破解.你可以想象一下,信用卡交易被破解的后果. 进入正题之前,我先 ...

  6. 怎么理解RSA算法

    原文地址:http://www.ittenyear.com/414/rsa/ 怎么理解RSA算法 能够把非对称加密算法里的公钥想象成一个带锁的箱子,把私钥想象成一把钥匙 能够把对称加密算法里的密钥想象 ...

  7. RSA算法原理(转)

    如果你问我,哪一种算法最重要?我可能会回答“公钥加密算法”.因为它是计算机通信安全的基石,保证了加密数据不会被破解.你可以想象一下,信用卡交易被破解的后果. 进入正题之前,我先简单介绍一下,什么是”公 ...

  8. RSA算法原理

    一直以来对linux中的ssh认证.SSL.TLS这些安全认证似懂非懂的.看到阮一峰博客中对RSA算法的原理做了非常详细的解释,看完之后茅塞顿开,关于RSA的相关文章如下 RSA算法原理(一) RSA ...

  9. [已解决] 快速理解RSA算法

    RSA算法基础详解 http://www.cnblogs.com/hykun/p/RSA.html RSA算法原理(一) http://www.ruanyifeng.com/blog/2013/06/ ...

随机推荐

  1. 索尼展示基于MicroLED技术的16K显示屏:约780吋

    尽管 8K 彩电刚刚在消费级市场崭露头角,更极致的 16K 却已不慌不忙地登场了. 在日前于拉斯维加斯举办的 NAB 2019 展会上,索尼就秀出了旗下的 16K 显示设备,它目前正在日本横滨的资生堂 ...

  2. HMC版本支持

      Target Version Upgrade From Upgrade Instructions Updates Date Available End of Service Models supp ...

  3. zabbix简单的操作(添加主机)

    zabbix是一种监控软件,我用的是centos7.5版本 Zabbix是一个基于WEB界面的提供分布式监视功能的企业级的开源解决方案. Zabbix既可以监控操作系统(Linux/Windows/A ...

  4. 浅谈javaScript中的继承关系<一>

    // JavaScript Document //创建三个构造函数 function Shape(){ this.name='ahape'; this.toString=function(){retu ...

  5. 两台linux服务器相互拷贝文件的两个方法

    scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的.可能会稍微影响一下速度.当你服务器 ...

  6. error C2280: 尝试引用已删除的函数

    #include<unordered_map> struct SceneData { unordered_map<CString, CString> mConversation ...

  7. 51 Nod 1678 lyk与gcd(容斥原理)

    1678 lyk与gcd  基准时间限制:2 秒 空间限制:131072 KB 分值: 80 难度:5级算法题  收藏  关注 这天,lyk又和gcd杠上了. 它拥有一个n个数的数列,它想实现两种操作 ...

  8. POJ 3180 牛围着池塘跳舞 强连通分量裸题

    题意:一群牛被有向的绳子拴起来,如果有一些牛(>=2)的绳子是同向的,他们就能跳跃.求能够跳跃的组数. #include <iostream> #include <cstdio ...

  9. CDOJ 1060 秋实大哥与快餐店 字典树 水题

    题目链接 B - 秋实大哥与快餐店 Time Limit:1000MS     Memory Limit:65535KB     64bit IO Format:%lld & %llu Sub ...

  10. xshell的快捷键

    https://blog.csdn.net/hellozpc/article/details/46753575