1、密钥的计算获取过程

密钥的计算过程为:首先选择两个质数p和q,令n=p*q。

令k=ϕ(n)=(p−1)(q−1),原理见2的分析

选择任意整数d,保证其与k互质

取整数e,使得[de]k=[1]k。也就是说de=kt+1,t为某一整数。

2、RSA加密算法原理解析

下面分析其内在的数学原理,说到RSA加密算法就不得不说到欧拉定理。

    欧拉定理(Euler’s theorem)是欧拉在证明费马小定理的过程中,发现的一个适用性更广的定理。
    首先定义一个函数,叫做欧拉Phi函数,即ϕ(n),其中,n是一个正整数。
    ϕ(n)=总数(从1到n−1,与n互质整数)
    比如5,那么1,2,3,4,都与5互质。与5互质的数有4个。ϕ(5)=4
    再比如6,与1,5互质,与2,3,4并不互质。因此,ϕ(6)=2
    对于一个质数p来说,它和1, 2, 3, …, p – 1都互质,所以ϕ(p)=p−1。比如ϕ(7)=6,ϕ(11)=10

欧拉定理叙述如下:

欧拉定理:如果n是一个正整数,a是任意一个非0整数,且n和a互质。那么,a^ϕ(n)−1可以被n整除。

推论1:如果m和n是互质的正整数。那么,ϕ(mn)=ϕ(m)ϕ(n)

推论2:[ab]n=[[a]n[b]n]n

证明:假设a和b除以n的余数为c1,c2。a和b可以写成a=nt1+c1,b=nt2+c2。那么,ab=n2t1t2+nt1c2+nt2c1+c1c2。因此ab除以n的余数为c1c2。即[ab]n=[a]n[b]n。

有以上定理后,由此可以推导出RSA算法的内在原理。

根据欧拉定理,对于任意z,如果z与n互质,那么:

[z^ϕ(n)]n=[z^k]n=[1]n

因此,

[z^(de)]n=[z^(kt+1)]n=[z^(kt)*z]n=[z^kt]n*[z]n= [z]n 因为[z^k]n = [1]n

上面主要使用了de=kt+1以及推论2。也就是说:

[z^(de)]n=[z]n

根据2的推论,有

([z^e]n)^d=[z]n

即d个余数相乘,因为其乘积可能大于n,所以由[ab]n=[[a]n[b]n]n,例如令a和b都为5,n为3,可知该结论

故上式可描述为[([z^e]n)^d]n=[z]n=z,就是原数字乘方求余数,然后再乘方求余数后得到原来数字的过程,得证。

公开的加密方式,私有的解密方式。RSA安全的关键在于很难对一个大的整数进行因子分解。

3、练习习题

按照RSA算法,若选两个奇数p=5,q=3,公钥e=7,则私钥d为:()

答案解析:

按RSA算法求公钥和密钥:
(1)选两质数p=5,q=3;
(2)计算n=p×q=5×3=15;
(3)计算(p-1)×(q-1)=8;
(4)公钥e=7,则依据ed=1 mod(p-1)×(q-1),即7d=1 mod 8。

结合四个选项,得到d=7,即49 mod 8=1。

4、Python代码实现

p =5
q = 3
e = 7
n = q*p
mod_value = (p-1)*(q-1)
# 依据 ed = 1 mod (p-1)*(q-1)
# d 现在是我们需要确定的密钥,那么逆推就是 e*d % ((p-1)*(q-1)) == 1,那么就输出d的值,因为它就是我们需要求得的密钥值
for d in range(0,n):
    if (e*d)%mod_value==1:
        print d

result >> 7

【密码学】RSA算法过程-求解密钥的更多相关文章

  1. 加密解密(6)RSA算法过程图解

    转自: http://blog.csdn.net/21aspnet/article/details/7249401 RSA算法 RSA公钥加密算法是1977年由Ron Rivest.Adi Shami ...

  2. 安全体系(二)——RSA算法详解

    本文主要讲述RSA算法使用的基本数学知识.秘钥的计算过程以及加密和解密的过程. 安全体系(零)—— 加解密算法.消息摘要.消息认证技术.数字签名与公钥证书 安全体系(一)—— DES算法详解 1.概述 ...

  3. 写给开发人员的实用密码学(七)—— 非对称密钥加密算法 RSA/ECC

    本文部分内容翻译自 Practical-Cryptography-for-Developers-Book,笔者补充了密码学历史以及 openssl 命令示例,并重写了 RSA/ECC 算法原理.代码示 ...

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

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

  5. <密码学入门>关于RSA算法的加密解密及代码实现

    RSA算法 是一种公钥加密算法,RSA算法相比别的算法思路非常清晰,但是想要破解的难度非常大.RSA算法基于一个非常简单的数论事实:两个素数相乘得到一个大数很容易,但是由一个大数分解为两个素数相乘却非 ...

  6. 【密码学】RSA算法原理

    RSA算法是一种非对称密码算法,所谓非对称,就是指该算法需要一对密钥,使用其中一个加密,则需要用另一个才能解密. RSA的算法涉及三个参数,n.e1.e2. 其中,n是两个大质数p.q的积,n的二进制 ...

  7. 跨越千年的RSA算法

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

  8. RSA 算法

    RSA 算法  from http://www.matrix67.com/blog/archives/5100 所有工作都准备就绪,下面我们可以开始描述 RSA 算法了. 首先,找两个质数,比如说 1 ...

  9. [转载]RSA算法详解

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

随机推荐

  1. 校园社交网站app

    1.项目说明 1.1 项目背景 虽然公共社交网络系统能够满足大多数高校校园用户在校园网络社交的需求,但是针对校园学习.工作和文化生活等方面的支持以及学校个性化需求方面却存在不足.利用电子校务平台的数据 ...

  2. 作业四 任务分解(WBS)

    近日忙于实验,未来得及完成任务分解昨晚召开了紧急会议,才确定了任务划分.主体分配如下:三名编程人员,一个主编两个辅编,一人做需求分析,一人做程序测试,一人专司文档. 具体细节如下:在剩余的三周左右的时 ...

  3. UIView 添加闪烁的渐变光

    CGRect gradientRect=CGRectMake(- imageView3.bounds.size.width*, * imageView3.bounds.size.width, imag ...

  4. git learn

    $ git config --global user.name "Your Name" $ git config --global user.email "email@e ...

  5. Docker(十七)-修改Docker容器启动配置参数

    有时候,我们创建容器时忘了添加参数 --restart=always ,当 Docker 重启时,容器未能自动启动, 现在要添加该参数怎么办呢,方法有二: 1.Docker 命令修改 docker c ...

  6. [微软]The latest version of Windows is Windows Sandbox

    The latest version of Windows is Windows Sandbox by Surur @mspoweruser Dec 19, 2018 at 1:40 GMT As h ...

  7. MyBatis中Mapper的返回值类型

    insert.update.delete语句的返回值类型 对数据库执行修改操作时,数据库会返回受影响的行数. 在MyBatis(使用版本3.4.6,早期版本不支持)中insert.update.del ...

  8. 【bzoj5118】Fib数列2 费马小定理+矩阵乘法

    题目描述 Fib定义为Fib(0)=0,Fib(1)=1,对于n≥2,Fib(n)=Fib(n-1)+Fib(n-2) 现给出N,求Fib(2^n). 输入 本题有多组数据.第一行一个整数T,表示数据 ...

  9. MySQL relay_log_purge=0 时的风险

    转自: http://xiezhenye.com/2015/12/mysql-relay_log_purge0-%E6%97%B6%E7%9A%84%E9%A3%8E%E9%99%A9.html 有时 ...

  10. HGOI20180812 (NOIP2018 提高组 Day1 模拟试题)

    前缀数组其实就是有序的,那么答案显然是      我们尝试求出通项公式: 证明如下: 因为 所以: 解之得: 更加通俗的写法如下: 易知  令 那么, (错位相减) 由易知等式代入得, 所以, 所以程 ...