- 浏览: 514856 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (563)
- 工作经验 (12)
- 数据库 (13)
- Servlet (10)
- Struts2 (1)
- Spring (25)
- Eclipse (5)
- Hibernate (5)
- Eclips (8)
- HTTP (7)
- J2EE (21)
- EHcache (1)
- HTML (11)
- 工具插件使用 (20)
- JPA (2)
- 杂谈 (17)
- 数据结构与算法 (3)
- Cloud Foundry (1)
- 安全 (10)
- J2SE (57)
- SQL (9)
- DB2 (6)
- 操作系统 (2)
- 设计模式 (1)
- 版本代码管理工具 (13)
- 面试 (10)
- 代码规范 (3)
- Tomcat (12)
- Ajax (5)
- 异常总结 (11)
- REST (2)
- 云 (2)
- RMI (3)
- SOA (1)
- Oracle (12)
- Javascript (20)
- jquery (7)
- JSP自定义标签 (2)
- 电脑知识 (5)
- 浏览器 (3)
- 正则表达式 (3)
- 建站解决问题 (38)
- 数据库设计 (3)
- git (16)
- log4j (1)
- 每天100行代码 (1)
- socket (0)
- java设计模式 耿祥义著 (0)
- Maven (14)
- ibatis (7)
- bug整理 (2)
- 邮件服务器 (8)
- Linux (32)
- TCP/IP协议 (5)
- java多线程并发 (7)
- IO (1)
- 网页小工具 (2)
- Flash (2)
- 爬虫 (1)
- CSS (6)
- JSON (1)
- 触发器 (1)
- java并发 (12)
- ajaxfileupload (1)
- js验证 (1)
- discuz (2)
- Mysql (14)
- jvm (2)
- MyBatis (10)
- POI (1)
- 金融 (1)
- VMWare (0)
- Redis (4)
- 性能测试 (2)
- PostgreSQL (1)
- 分布式 (2)
- Easy UI (1)
- C (1)
- 加密 (6)
- Node.js (1)
- 事务 (2)
- zookeeper (3)
- Spring MVC (2)
- 动态代理 (3)
- 日志 (2)
- 微信公众号 (2)
- IDEA (1)
- 保存他人遇到的问题 (1)
- webservice (11)
- memcached (3)
- nginx (6)
- 抓包 (1)
- java规范 (1)
- dubbo (3)
- xwiki (1)
- quartz (2)
- 数字证书 (1)
- spi (1)
- 学习编程 (6)
- dom4j (1)
- 计算机系统知识 (2)
- JAVA系统知识 (1)
- rpcf (1)
- 单元测试 (2)
- php (1)
- 内存泄漏cpu100%outofmemery (5)
- zero_copy (2)
- mac (3)
- hive (3)
- 分享资料整理 (0)
- 计算机网络 (1)
- 编写操作系统 (1)
- springboot (1)
最新评论
-
masuweng:
亦论一次OutOfMemoryError的定位与解错 -
变脸小伙:
引用[color=red][/color]百度推广中运用的技术 ...
Spring 3 mvc中返回pdf,json,xml等不同的view -
Vanillva:
不同之处是什么??
Mybatis中的like查询 -
thrillerzw:
转了。做个有理想的程序员
有理想的程序员必须知道的15件事 -
liujunhui1988:
觉得很有概括力
15 个必须知道的 Java 面试问题(2年工作经验)
源:www.mathjax.org/demos/mathml-samples/
http://www.mathjax.org/demos/tex-samples/
评:
RSA加密解密算法中,已知公钥和密匙n,e,d,是否能将合数n=p*q分解?
先温故一下RSA算法:
1、两个大质数p,q。
2、模数n=p*q。
3、欧拉函数f=(p-1)(q-1)。
4、随机数e,1 5、模逆d,即最小整数d,e*d=1 mod f。
也就是说:
知道了p,q也就知道了n,f;
知道了f,e也就知道了d。
下面温故一下加密解密算法:
已知明文m,满足m 加密:密文c=m^e mod n。
解密:明文x=c^d mod n。
证明一下解密得到的明文x=m:
由c=m^e mod n,得c=m^e+k*n。
代入x=c^d mod n,得x=(m^e+k*n)^d mod n。
于是x=m^e^d mod n,即x=m^(e*d) mod n。
由于e^d=1 mod f,得e*d=k*f+1。
代入得x=m^(kf+1) mod n,x=m*m^(kf) mod n。
当m与n互质时,x=m*(m^f)^k mod n,由欧拉定理可知x=m mod n。
又m 当m与n不互质时,由于n=p*q且m 若m=kp,则m^(q-1)=(k*p)^(q-1)=1 mod q。
接着[(k*p)^(q-1)]^[k*(p-1)]*kp=kp mod q,即(k*p)^(e*d)=k*p mod q。
又由于(k*p)^(ed)=k*q+k*p,(k*p)^(ed)=k*q*p+k*p,。
所以m^(ed)=m mod n,x=m。
即证。
----
现在考虑以下问题:
已知n和d,是否能将n分解?
可将这个问题分为几个问题:
1、已知n和f,是否能将n分解?
2、已知n,e和d,是否能得到f?
3、已知n和d,是否能得到e?
4、已知d和f,是否能得到e?
对于问题1的回答是肯定的。
n-f+1=sum=p+q,用二分法厉遍p,得p(sum-p)和n比较大小,即可快速确定p,q的值。
所以知道了n,f,就知道了p和q。也就是说,p,q,n,f四个数知道任意两个就可以知道全部。
那么,问题2就来了。如果p,q,n,f只知其一,又知道了e和d,是否能知道其它三个数呢?
最常见的情况就是知道了n,e和d。
由e*d=1 mod f,知e*d=k*f+1。
根据的同余方程定理可以知道存在k 并且d,k始终互质,由e,f互质又可推出e,k互质和f,d互质。
现在的问题又变为,e,d,f三个数各知道两个,能否知道第三个数?在已知n的情况下又是如何呢?
已知e,f可知道d,已知e,d不可知道f。
已知d,f,因为d,f互质,所以模逆e必存在,e必然在f的同余类中。又e 也就是说,e,f求d和d,f求e的过程是相同的。
这样,问题4的回答就是肯定的。
我们还可以发现,问题3的回答是否定的。
e和d对于f的地位是等价的,我们显然不可能用公匙n,e得到密匙n,d,所以反之亦然。
于是我们发现,f是十分重要的。知道了f,那么e和d就能互求。知道了f,那么n,p,q就能互求。
最后我们回到问题2。由于n,p,q的地位是等价的,我们可以换个死路考虑。
在已知p,e,d的情况下能否知道f和n?由e*d=k*f+1可以算出k*f。
然后又知道了p,可以算出k*(p-1)(q-1)/(p-1)=k*(q-1)。
然而这样组合的数量是很多的,如果不知打k,我们不可能知道q。所以知道p,e,d不能知道f或n。
那么知道n,e,d,也就是知道n和k*f,也就是知道p*q和k(p-1)(q-1)的情况下呢?
由于k是不可知的,k值的不同会导致f产生很大的变化。
我们虽然知道上限n,但直接拿f去除以n显然不能得到正确的k。
由于p和q的差值可能很大也可能很小,所以除出来的结果可能十分接近k也可能和k差很多。
于是无法缩小搜索p和q的范围,也无从使用二分法。
所以我认为,已知n,e,d是无法得到f的,同样也无法得到p和q。
如果大家有办法分解n的话,求详细的算法。
http://www.mathjax.org/demos/tex-samples/
评:
RSA加密解密算法中,已知公钥和密匙n,e,d,是否能将合数n=p*q分解?
先温故一下RSA算法:
1、两个大质数p,q。
2、模数n=p*q。
3、欧拉函数f=(p-1)(q-1)。
4、随机数e,1 5、模逆d,即最小整数d,e*d=1 mod f。
也就是说:
知道了p,q也就知道了n,f;
知道了f,e也就知道了d。
下面温故一下加密解密算法:
已知明文m,满足m 加密:密文c=m^e mod n。
解密:明文x=c^d mod n。
证明一下解密得到的明文x=m:
由c=m^e mod n,得c=m^e+k*n。
代入x=c^d mod n,得x=(m^e+k*n)^d mod n。
于是x=m^e^d mod n,即x=m^(e*d) mod n。
由于e^d=1 mod f,得e*d=k*f+1。
代入得x=m^(kf+1) mod n,x=m*m^(kf) mod n。
当m与n互质时,x=m*(m^f)^k mod n,由欧拉定理可知x=m mod n。
又m 当m与n不互质时,由于n=p*q且m 若m=kp,则m^(q-1)=(k*p)^(q-1)=1 mod q。
接着[(k*p)^(q-1)]^[k*(p-1)]*kp=kp mod q,即(k*p)^(e*d)=k*p mod q。
又由于(k*p)^(ed)=k*q+k*p,(k*p)^(ed)=k*q*p+k*p,。
所以m^(ed)=m mod n,x=m。
即证。
----
现在考虑以下问题:
已知n和d,是否能将n分解?
可将这个问题分为几个问题:
1、已知n和f,是否能将n分解?
2、已知n,e和d,是否能得到f?
3、已知n和d,是否能得到e?
4、已知d和f,是否能得到e?
对于问题1的回答是肯定的。
n-f+1=sum=p+q,用二分法厉遍p,得p(sum-p)和n比较大小,即可快速确定p,q的值。
所以知道了n,f,就知道了p和q。也就是说,p,q,n,f四个数知道任意两个就可以知道全部。
那么,问题2就来了。如果p,q,n,f只知其一,又知道了e和d,是否能知道其它三个数呢?
最常见的情况就是知道了n,e和d。
由e*d=1 mod f,知e*d=k*f+1。
根据的同余方程定理可以知道存在k 并且d,k始终互质,由e,f互质又可推出e,k互质和f,d互质。
现在的问题又变为,e,d,f三个数各知道两个,能否知道第三个数?在已知n的情况下又是如何呢?
已知e,f可知道d,已知e,d不可知道f。
已知d,f,因为d,f互质,所以模逆e必存在,e必然在f的同余类中。又e 也就是说,e,f求d和d,f求e的过程是相同的。
这样,问题4的回答就是肯定的。
我们还可以发现,问题3的回答是否定的。
e和d对于f的地位是等价的,我们显然不可能用公匙n,e得到密匙n,d,所以反之亦然。
于是我们发现,f是十分重要的。知道了f,那么e和d就能互求。知道了f,那么n,p,q就能互求。
最后我们回到问题2。由于n,p,q的地位是等价的,我们可以换个死路考虑。
在已知p,e,d的情况下能否知道f和n?由e*d=k*f+1可以算出k*f。
然后又知道了p,可以算出k*(p-1)(q-1)/(p-1)=k*(q-1)。
然而这样组合的数量是很多的,如果不知打k,我们不可能知道q。所以知道p,e,d不能知道f或n。
那么知道n,e,d,也就是知道n和k*f,也就是知道p*q和k(p-1)(q-1)的情况下呢?
由于k是不可知的,k值的不同会导致f产生很大的变化。
我们虽然知道上限n,但直接拿f去除以n显然不能得到正确的k。
由于p和q的差值可能很大也可能很小,所以除出来的结果可能十分接近k也可能和k差很多。
于是无法缩小搜索p和q的范围,也无从使用二分法。
所以我认为,已知n,e,d是无法得到f的,同样也无法得到p和q。
如果大家有办法分解n的话,求详细的算法。
发表评论
-
https单向加密与双向加密区别
2015-05-23 11:04 2058源:http://edison0663.iteye.c ... -
Base64算法
2015-01-15 12:30 424源:http://blog.sina.com.cn/s/blo ... -
谷歌验证 (Google Authenticator) 的实现原理是什么?
2014-10-22 16:50 955源:http://www.zhihu.com/ques ... -
RSA算法原理(二)
2014-10-17 15:28 494源:http://www.ruanyifeng.com ... -
用实例给新手讲解RSA加密算法
2014-10-17 15:09 656源:http://www.cfca.com.cn/zh ... -
java 语言与 C语言端 AES (ECB)
2014-10-15 16:50 5295注:java 为no-padding 注释掉了 padding ... -
使用SSH遇到Authentication Refused: Bad Ownership or Modes for Directory
2014-10-07 17:17 1044源:http://xwv.iteye.com/blog/189 ... -
获取osc动弹中人员的用户名,并@他,so easy
2014-10-23 11:39 381源:http://my.oschina.net/gll ... -
Nmap扫描原理与用法
2013-12-03 22:16 669源:http://blog.csdn.net/aspirati ... -
sql攻击跟如何防止
2013-02-22 13:34 514源:http://zhidao.baidu.com/ ... -
数字证书原理
2013-02-07 18:41 1061源:http://my.oschina.net/qinli ...
相关推荐
判别方法主要有以下几种(不限于此):(1)两个质数一定是互质数。例如,2 与 7、13 与 19。(2)一个质数如果不能整除另一个合数,这两个数为互质数。例如,3 与 10、5 与 26。(3)1 不是质数也不是合数,它和...
### RSA算法原理 #### 定义与背景 RSA算法是一种非对称加密算法,由Ron Rivest、Adi Shamir 和 Leonard Adleman 在1977年提出,因此取三人的姓氏首字母命名为RSA。非对称加密算法的特点在于其加密和解密使用不同的...
- 首先选择两个大素数p和q,并计算它们的乘积n = pq。 - 计算n的欧拉函数值φ(n) = (p-1)(q-1)。 2. **选择加密密钥e**: - 选择一个与φ(n)互质的小于φ(n)的正整数e作为加密密钥。 - 确保e与φ(n)的最大公约数...
1. **选择大素数**:首先,选取两个大素数\(p\)和\(q\),计算它们的乘积\(n = pq\),同时计算出\(n\)的欧拉函数\(\phi(n) = (p-1)(q-1)\)。 2. **确定\(e\)值**:随机选取一个大于1的整数\(d\),确保\(d\)与\(\phi...
具体来说,选择两个大素数\( p \)和\( q \),计算\( n = pq \),其中\( n \)是公钥的一部分;再选择一个整数\( e \),使得\( 1 < e (p-1)(q-1) \),且\( e \)与\( (p-1)(q-1) \)互质。\( e \)和\( n \)组成公钥\( (e...
在RSA中,选取两个大素数p和q(p≠q),计算它们的乘积N=pq,以及欧拉函数φ(N)=(p-1)(q-1)。然后选择一个与φ(N)互质的整数e,接着找到满足ed=1 mod φ(N)的d作为解密密钥。公钥是(e, N),私钥是(d, p, q)。加密时...
3. **选择\( e \)和计算\( d \)**:\( e \)是与\( \phi(n) \)互质的数,\( d \)是\( e \)关于\( \phi(n) \)的模逆元。 4. **加密和解密**:根据RSA加密和解密公式实现。 #### 4.2 C语言实现示例 在C语言中实现RSA...
1. **密钥生成**:选择两个大的随机质数\( p \)和\( q \),计算\( N = pq \)。\( N \)的长度通常为1024位或更高,例如1024位即309个十进制数字。每个因子\( p \)和\( q \)的长度大约为512位。然后,计算欧拉函数\( \...
1. **选择两个大素数\( p \)和\( q \)**,并计算\( n = pq \)。 2. **计算欧拉函数\( \phi(n) = (p-1)(q-1) \)**。 3. **选择一个整数\( e \)使得\( 1 < e (n) \),并且\( e \)和\( \phi(n) \)互质**。 4. **计算\( ...
1. **密钥生成**:选取两个大素数p和q,计算它们的乘积n=pq,以及φ(n)=(p-1)(q-1),然后选择一个与φ(n)互质的整数e作为公钥的一部分,最后找到e相对于φ(n)的模逆元d作为私钥。 2. **加密**:明文m加密为密文c,...
1. **选择两个大素数** \(p\) 和 \(q\),并计算 \(N = pq\)。 2. **计算欧拉函数值** \(\phi(N) = (p-1)(q-1)\)。 3. **选择一个与\(\phi(N)\)互质的小于\(\phi(N)\)的整数\(e\)**,作为公钥的一部分。 4. **找到\(e...
- **生成密钥对**:选取两个大质数 \( p \) 和 \( q \),计算 \( N=pq \) 和 \( L=\text{lcm}(p-1,q-1) \),选择一个与 \( L \) 互质的数 \( E \),并计算 \( D \) 使得 \( ED \equiv 1 \mod L \)。 - **应用领域...