长度,建议至少1024。模数n(常取默认65537)两边都要用。

指数e,和n一起就是公钥。

指数d,和n一起就是私钥。

质数p和q用于生成密钥对,然后就丢弃不公开。

一。密钥对的生成步骤

1、随机选择两个不相等的质数p和q。

2、计算p和q的乘积n。

3、计算p-1和q-1的乘积m。

4、随机选个整数e,e与m要互质,且0<e<m。

5、计算e的模反元素d。

6、n,e组成公钥,n,d组成私钥。

用公钥(n, e)加密:明文e ≡ 密文 (mod n)

用私钥(n, d)解密:密文d ≡ 明文 (mod n)

上述表达式是同余式,也就是“≡”两边mod n是相等的。mod运算就是取被除数 / 除数得到的余数,运算符是%。比如5%3=2。所以上式也可表达成

用公钥(n, e)加密:密文 = 明文e % n

用私钥(n, d)解密:明文 = 密文d % n

一。

i 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
i mod 4 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3
i mod 7 0 1 2 3 4 5 6 0 1 2 3 4 5 6 0 1 2 3 4 5

(a % 4)是以4为周期在循环,(a % 7)是以7为周期在循环,而且数对(a % 4, a % 7)在这个[0,21]之间并没有出现重复,也就是说由(a % 4, a % 7)可以确定a的值

如果n个数互质,且乘积为P,有一个未知数M,已知M分别除以n个数的余数,那个在0<M<P的范围内,可以确定唯一的M值。

二。

13 * 77 = 1001 => 1001 % 1000 = 1

=> 1001 ≡ 1 (mod 1000)

=> a * 1001 ≡ a (mod 1000)

就是说任何数乘以1001除以1000得到余数是本身。因此:

(a * 1001) % 1000 = (a * 13 * 77) % 1000 = ((a * 13) % 1000) * 77) % 1000

理解一下就能发现,我们并不需要知道a * 13的积是多少,而是知道它除以1000的余数就行了,因为反正最后都是要模1000,那事先拿一部分来模1000并不影响结果。

除法类似,两个数乘积除以另一个数,那事先用一个乘数除以除数,得到的值再乘以另一个乘数再除,并不影响结果。这个思想,也是RSA用来当被模数过大时优化计算力的算法。

你心想三位数,乘以13,告诉我乘积的后三位数,我就能知道你想的是哪个数!

假如你想的是233,233*13=3029,所以你告诉我的是029,我只要把29*77=2233,积的后三位数233就是你心想的数。

这里就有点非对称的影子了,(1000, 13)就是公钥,(1000, 77)就是私钥。

3.费马小定理

☆  p = 3

2- 1 = 3,   2- 1 = 15 = 3×5,   2- 1 = 63 = 3×21,  2- 1 = 255 = 3×85,  210 - 1 = 1023 = 3×341, ...

费马指数:2, 4, 6, 8, 10, ......

☆  p = 5

2- 1 = 15 = 5×3,   2- 1 = 255 = 5×51,   212 - 1 = 4095 = 5×819,   216 - 1 = 65535 = 5×13107, ...

费马指数:4, 8, 12, 16, ......

☆  p = 7

2- 1 = 7 = 7×1,   2- 1 = 63 = 7×9,   2- 1 = 511 = 7×73,   212 - 1 = 4095 = 7×585,  ...

费马指数:3, 6, 9, 12, ......

☆  p = 11

210 - 1 = 1023 = 11×93,   220 - 1 = 1048575 = 11×95325,   230 - 1 = 1073741823 = 11×797612893,   ...

费马指数:10, 20, 30,  ......

参考:

https://toutiao.io/posts/u6ehd/preview

图片:http://introcs.cs.princeton.edu/java/99crypto/

RSA原理说明的更多相关文章

  1. RSA原理及生成步骤

    摘自:http://www.ruanyifeng.com/blog/2013/06/rsa_algorithm_part_one.html(可到原网址查看秘钥生成原理) RSA算法原理(一) 因为它是 ...

  2. RSA原理、ssl认证、Tomcat中配置数字证书以及网络传输数据中的密码学知识

      情形一:接口的加.解密与加.验签 rsa不是只有加密解密,除此外还有加签和验签.之前一直误以为加密就是加签,解密就是验签.这是错误的! 正确的理解是: 数据传输的机密性:公钥加密私钥解密是密送,保 ...

  3. RSA - 原理、特点(加解密及签名验签)及公钥和私钥的生成

    Wiki - RSA加密演算法 Wiki - 欧拉函数 Wiki - 模反元素 ASN.1 格式标准 RSA算法原理(二) 注意: RSA 加密或签名后的结果是不可读的二进制,使用时经常会转为 BAS ...

  4. 转: RSA原理 阮一峰的博客

    转:http://www.ruanyifeng.com/blog/2013/06/rsa_algorithm_part_one.html 讲的非常细致,易懂.

  5. 数字签名中公钥和私钥是什么?对称加密与非对称加密,以及RSA的原理

    http://baijiahao.baidu.com/s?id=1581684919791448393&wfr=spider&for=pc https://blog.csdn.net/ ...

  6. (转)对称加密与非对称加密,以及RSA的原理

    一 概述 二对称加密和非对称加密 对称加密 非对称加密 区别 三RSA原理 整数运算 同余运算 当模数为合数n时 当模数为质数p的时候 离散对数问题 RSA原理 一 , 概述 在现代密码学诞生以前,就 ...

  7. Windows phone应用开发[19]-RSA数据加密

    在这个系列的第十六章节中Windows phone应用开发[16]-数据加密 中曾详细讲解过windows phone 常用的MD5,HMAC_MD5,DES,TripleDES[3DES] 数据加密 ...

  8. RSA算法详解

    1.RSA加密算法是最常用的非对称加密算法 2.RSARSA以它的三个发明者Ron Rivest, Adi Shamir, Leonard Adleman的名字首字母命名, 3.目前学术界无法证明RS ...

  9. RSA加解密算法以及密钥格式

    RSA算法: 有个文章关于RSA原理讲的不错: https://blog.csdn.net/dbs1215/article/details/48953589 http://www.ruanyifeng ...

随机推荐

  1. PPT高手必须树立的十个理念

    08 2014年08月 [263职场技巧]PPT高手必须树立的十个理念 理念一:文字是用来瞟的,不是读的 我们时不时听到这样的言论:“PPT很简单,就是把Word里的文字复制.粘贴呗.”这其实是对PP ...

  2. GLIBC_2.14报错

    [linux]提示"libc.so.6: version `GLIBC_2.14' not found",系统的glibc版本太低 0.以下在系统CentOS 6.3 x86_64 ...

  3. [原]如何为SqlServer2008数据库分配用户

    前言: 当一个项目完成后,为了数据安全,总会对该项目的数据库分配一个用户,应该说总会创建一个用户来管理这个数据库,并且这个用户只能管理这个数据库.搞了好多次,每次都忘记怎么设置,所以写一篇博文记录一下 ...

  4. 【Java并发编程四】关卡

    一.什么是关卡? 关卡类似于闭锁,它们都能阻塞一组线程,直到某些事件发生. 关卡和闭锁关键的不同在于,所有线程必须同时到达关卡点,才能继续处理.闭锁等待的是事件,关卡等待的是其他线程. 二.Cycli ...

  5. linux 文件编码问题

    iconv -f UTF- -t gb18030 file_input -o file_output 上述命令不一定有用. 大概了解下文件编码,和vim里面的编码情况. 1 字符编码基础知识 字符编码 ...

  6. Dropbox 在 Ubuntu 上需要认证授权的问题

    在 Ubuntu 上,通过 Ubuntu软件中心 搜索下载安装了 Dropbox . 运行时,弹出如下图的提示. 输入密码,点击 授权 后,没有出现 Dropbox 的运行界面. 再次点击运行,仍会出 ...

  7. Mycat的简易安装及测试

    1.环境 OS版本 CentOS release 6.5 (Final) 64bit DB版本 Mysql 5.6.37 Mycat 1.6 jdk1.7及以上版本 2.实战部署 1.创建用户及用户组 ...

  8. Elasticsearch学习之深入聚合分析一---基本概念

    首先明白两个核心概念:bucket和metric 1. bucket:一个数据分组 city name 北京 小李 北京 小王 上海 小张 上海 小丽 上海 小陈 基于city划分buckets,划分 ...

  9. [原]rpm安装rpm-package报错:Header signature NOKEY 和 error: Failed dependencies:

    以前经常遇到这个问题,一直未有记录,今天记录下来: 在安装rpm包的时候报错误如下: Question 1: warning: *.rpm: Header V3 DSA signature: NOKE ...

  10. 【黑金原创教程】【FPGA那些事儿-驱动篇I 】实验十二:串口模块① — 发送

    实验十二:串口模块① — 发送 串口固然是典型的实验,想必许多同学已经作烂,不过笔者还要循例介绍一下.我们知道串口有发送与接收之分,实验十二的实验目的就是实现串口发送,然而不同的是 ... 笔者会用另 ...