| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 31788 人关注过本帖
标题:各位老师好!求助编辑一个大整数的快速乘除法可调用程序
只看楼主 加入收藏
ysr2857
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:34
帖 子:809
专家分:77
注 册:2020-2-10
收藏
得分:0 
回复 180楼 wmf2014
谢谢您!速度快!有你帮助我就有信心了。原理是没有错误的,用到欧拉定理(费马小定理是其中的特例)的推论,完全是RSA密码的原理,若有错误那密码就不保密了,不用分解也能还原,岂不是不顶用?
证明过程麻烦,用到许多公式,都是求余数的,用到幂的模的传递性,可逆性等等,证明就不发了。
2020-03-02 19:27
ysr2857
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:34
帖 子:809
专家分:77
注 册:2020-2-10
收藏
得分:0 
回复 180楼 wmf2014
我觉得您对这个数论问题很有研究,发一下我的证明,其实是综合了许多资料弄出来的,有的复杂不规范采用了简单思路清晰的,不同的文章中摘录的,不是我推理的不是原创,我只是串联起来的,如果能讲清楚大概思路已经不错了,我相信是没错误的,否则RSA密码体制就不成立了。
分三段:欧拉定理的证明,其推论的证明,RSA加解密过程的证明。下面是欧拉定理的证明:
欧拉定理:a^(菲n)=1(modn)
证明:
将1~n中与n互质的数按顺序排布:x1,x2……xφ(n) (显然,共有φ(n)个数)

我们考虑这么一些数:

m1=a*x1;m2=a*x2;m3=a*x3……mφ(n)=a*xφ(n)
数m1,m2,m3……mφ(n)(如果将其次序重新排列)必须相应地同余于x1,x2,x3……xφ(n).
故得出:m1*m2*m3……mφ(n)≡x1*x2*x3……xφ(n) (mod n)
或者说a^[φ(n)]*(x1*x2*x3……xφ(n))≡x1*x2*x3……xφ(n)(mod n)
或者为了方便:K{a^[φ(n)]-1}≡0 ( mod n ) 这里K=x1*x2*x3……xφ(n)。
可知K{a^[φ(n)]-1}被n整除。但K中的因子x1,x2……都与n互质,所以K与n互质。那么a^[φ(n)]-1必须能被n整除,即a^[φ(n)]-1≡0 (mod n),即a^[φ(n)]≡1 (mod n),得证。
2020-03-03 09:51
ysr2857
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:34
帖 子:809
专家分:77
注 册:2020-2-10
收藏
得分:0 
当n为素数时就得到费马小定理:
费马小定理:

  对于质数p,任意整数a,均满足:a^p≡a(mod p)

而RSA密码的加解密过程不同于费马小定理。
2020-03-03 09:56
ysr2857
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:34
帖 子:809
专家分:77
注 册:2020-2-10
收藏
得分:0 
欧拉定理的推论:

  若正整数a,n互质,那么对于任意正整数b,有a^b≡a^(b mod φ(n))(mod n)

证明如下:(类似费马小定理的证明)

  把目标式做一简单变形:a^(b - b mod φ(n))* a^(b mod φ(n))≡ a^(b mod φ(n))(mod n),所以接下来只需要证明a^(b - b mod φ(n))≡ 1 (mod n),又因为:

( b - b mod φ(n))| φ(n),不妨设:( b - b mod φ(n))= q*φ(n)(q为自然数),则有a^(q*φ(n))== (a^q)^φ(n),因为a,n互质,那么(a^q)与n也互质,

那么就转换到了欧拉定理:(a^q)^φ(n)≡ 1 (mod n),成立。所以我们这个推论成立。

 b mod φ(n)是求模就是求余数的关系不是乘法,不等于b*φ(n),所以解释一下这一步:设b=q∗φ(n)+r,其中0≤r<φ(n),即r=b mod φ(n).于是:
( b - b mod φ(n))| φ(n),
所以前面的成立。
这都是简述版,我压缩了,希望您能理解,明白一点过程就好,再深入的讲我也不会。
RSA密码的加解密过程的推导证明我整理一下再讲。
2020-03-03 10:07
ysr2857
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:34
帖 子:809
专家分:77
注 册:2020-2-10
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册
先发一个图片,后面再发令一文章的证明,二者本质一样,后者更全面思路更清晰点儿。
2020-03-03 11:37
ysr2857
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:34
帖 子:809
专家分:77
注 册:2020-2-10
收藏
得分:0 
RSA公钥密码解密过程的证明:
也就是证明下面的式子:c^d=m(mod n).
因为根据加密规则:m^e=c(mod n).
于是c可以写成:c=m^e-kn。
将c代入要我们证明的解密规则:
(m^e-kn)^d=m(mod n)。
它等同于求证:m^(ed)=m(mod n)。
由于ed=1(mod  φ(n))
所以  ed=h φ(n)+1.
将ed代入:m^(h φ(n)+1)=m(mod n)。
接下来分两种情况证明上面的式子:
1,m与n互质:
根据欧拉定理,此时m^ φ(n)=1(mod n),
则得到:(m^ φ(n))^h *m=m (mod n)。
原式得证。
2,m与n不互质的情况:(其实我们用的n为素数,不会是这种情况的,m<n则二者互质,当m=n时由于都是素数和前一种情况一样。)
此时,由于n等于素数p和q的乘积,所以m必然等于kp或kq,
以m=kp为例,考虑到这时k与q必然互质,则根据欧拉定理,下面的式子成立:
(kp)^(q-1)=1(mod q)。
进一步得到:((kp)^(q-1))^(h(p-1)) *kp=kp (mod q)
就是(kp)^(ed)=kp (mod q)
将它改写成下面的等式:
(kp)^(ed)=tq+kp
这时t必然能被p整除,即t=t1*p
则(kp)^(ed)=t1*pq+kp
因为m=kp,n=pq,所以:
m^(ed)=m (mod n)
原式得证。(完)

所以,不同于费马小定理的,我们采用n为素数,当 φ(n)不等于n-1时,还原不回去明文m,就可以确定n为合数。
2020-03-03 12:16
ysr2857
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:34
帖 子:809
专家分:77
注 册:2020-2-10
收藏
得分:0 
这个是非对称加密,是两个过程,不同于费马小定理,加密是一个过程,用到公钥,解密是又一个过程用到私钥。是唯一的对应关系,不会出现错误。(指密文和公开模数n是唯一的对应关系)

[此贴子已经被作者于2020-3-3 12:21编辑过]

2020-03-03 12:19
ysr2857
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:34
帖 子:809
专家分:77
注 册:2020-2-10
收藏
得分:0 
前面的图片中的证明用到了传递性,不容易明白吧,解释一下,所谓的传递性就是没有算到底,没有得出最后的余数,只是一系列的同余式相等,就像不断的累加商值余数仍然大于除数直到最后得到余数,中间一系列的同余式就是传递的过程。
这种方法书写不规范的就不容易明白,使人眼花缭乱的,上面的都是比较清晰的过程,供参考。
谢谢您关注和沟通,感谢您的帮助!
2020-03-03 12:34
ysr2857
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:34
帖 子:809
专家分:77
注 册:2020-2-10
收藏
得分:0 
欧拉定理的另一个推论(据说和前面的道理一样),咱不明白无法证明(证明过程应该和前面一样原文都是证明结束说明了一下而已,就是说明当a和n不一定互质时就是这个等式,所以我不明白这个),无法用,用不到,发一下您看看吧:
特别的,如果a,n不互质,且b>φ(n)时,a^b≡a^(b mod φ(n)+ φ(n))(mod n)。
2020-03-03 12:58
ysr2857
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:34
帖 子:809
专家分:77
注 册:2020-2-10
收藏
得分:0 
举个例子,下面就是传递性:
3*5=15=8+7=8=1 (mod 7).
这个写法规范不?我不知道,好多文章都这样写,规范的应该这样吧,虽然麻烦一点,应该这样我觉得:
15 (mod 7)=8 (mod 7)=1 (mod 7).
这样才清楚,个人见解,供参考。(我们知道15和8是不相等的,容易使人搞错,使人糊涂。哈哈哈哈,见笑了!)

[此贴子已经被作者于2020-3-3 13:20编辑过]

2020-03-03 13:17
快速回复:各位老师好!求助编辑一个大整数的快速乘除法可调用程序
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021454 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved