分数求模(取余)过程 乘法逆元.docVIP

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
分数求模(取余)过程 乘法逆元

分数的模运算在ECC加密算法中需要用到对分数的模运算,但大多的资料只给结果没有给计算过程,就连初等数论书上面也找不到计算 方法,搜索了一下,终于在网上找到了相关资料,用的思路其实还是整数模运算的,直接copy下来下面是“分数”模运算的定义:b, m互质(互为素数)k = a/b (mod m) = kb = a (mod m)这里求 x = 1/17 (mod 2668)=17x = 1 (mod 2668)=17x = 2668k + 1 (k∈整数)取合适的k使得17|(2668k+1) 【应该是17能被(2668k+1)整除,也即17x mod 2668 = 1】这里刚好17 | (2668 + 1)所以k = 1, x = (2668+1)/17 = 157当然,当k = 1 + 17n 时,x = (2668 + 17·n·2668 + 1)/17 = 157 + 2668n也符合条件(n任意整数)但如果限定 2668 x 0,x是唯一的。 分数求模(取余)过程 [原创 2008-03-20 20:13:27] ?? 字号:大 中 小 貌似分数是这样取余的,好好学习,天天向上!计算a/x(mod n)a/x (mod n)=a*x^-1(mod n)这里的d就相当于x,f相当于n计算1/x?mod?n =x^(-1)?mod?n 就是求y,满足: yx?=?1?mod?n y是有限域F(n)上x这里的d就相当于x,f相当于nint?ExtEnclid(int?d,int?f) ?k=x3/y3比如5/3=1;15/4=3{ ????????int?x1,x2,x3,y1,y2,y3,t1,t2,t3,k; if(df)?d=d+f-(d=f);??//交换d和f使得df ????????x1=1,x2=0,x3=f; ????????y1=0,y2=1,y3=d; ????????while(1) ????????{ ????????????????if(y3==0)???????return?0;???????//没有逆元,gcd(d,f)=x3 ????????????????if(y3==1)???????return?y2;??????//逆元为y2,gcd(d,f)=1 ????????????????k=x3/y3; ????????????????t1=x1-k*y1,?t2=x2-k*y2,?t3=x3-k*y3; ????????????????x1=y1,x2=y2,x3=y3; ????????????????y1=t1,y2=t2,y3=t3; ????????} } int?main() { ????????int?d,f,res; ????????printf(you?can?try?d=550?f=1769,?d^-1?=?550,?press?ctrl+Z?to?quit...\n); ????????printf(intput?the?d?and?f?value:\n); ????????while(scanf(%d%d,d,f)==2) ????????{ ????????????????printf(Enclid?:?gcd(%d,%d)=%d\n,d,f,Enclid(d,f)); ????????????????res=ExtEnclid(d,f); ????????????????if(res==0)??????printf(Not?Exist?the?d^-1\n); ????????????????else ????????????????????????if(res0)???????printf(ExtenderEnclid?:?d^-1?=?%d?,? ?????????????????????????????????????????%d?*?%d?=?1?mod?%d\n,res,d,res,f); ????????????????????????else?k=x3/y3比如5/3=1;15/4=3用扩展的欧几里德算法简单描述如下: ExtendedEuclid(d,f) 1 (X1,X2,X3):=(1,0,f) 2? (Y1,Y2,Y3):=(0,1,d) 3? if (Y3=0) then return? d=null//无逆元 4? if (Y3=1) then return? d=Y2? //Y2为逆元 5? Q:=X3 div Y3 6? (T1,T2,T3)

文档评论(0)

803322fw + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档