网站大量收购独家精品文档,联系QQ:2885784924

elgamalc语言(Elgamalc language).doc

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
elgamalc语言(Elgamalc language)

elgamalc语言(Elgamalc language) #包括 iostream。” #包括程序。” #包括时间。” a,b; 国际prime_number_p(); 随机(int); m_develop整型(int); --------------------------------- / * * / 素数(int p) { int i,j; 对于(i = 2;i p;+ +) { p=%1 i; 如果(j=0)返回0; } 返回1; } //判断是否为素数,若为素数则返回1 ------------------------------------ / * * / 国际prime_number_max(int n,int m) { int p; 对于(p=m;p=n;p) { if(素数(p)=1) 返回p; } } //求出N,M之间的最大素数 -------------------------------- / * * / 国际prime_number_p() { p,m,n; cout “为一组用户产生一个公钥P(P为素数)“ endl; cout “请输入P所在范围n,m(系统将选择最大的素数P)“ endl; cout “n”; CIN; cout “m”; 子宫内膜异位囊肿; P = prime_number_max(n,m); 如果(p=0) { cout “N、M中无素数”; P = prime_number_p(); } 返回p; } // P的产生 ------------------------------- / * * / 国际random_number_g(int p) {整数; srand((int)时间(空)); G = rand() % P; 返回G; } //克的产生 pki_y(int,int int,int x) { y; int i; y=1; 对于(i = 0;i x;+ +) {; y = P;} 回到Y; } //公钥Y的产生 int GCD(int,int b) { int [ 50 ],q [ 50 ]; 如果(a) { S [ 0 ] =; s [ 1 ] = b; } 其他的 { S [ 0 ] =; s [ 1 ] = b; } 对于(int = i 1;i 100;i + +) { [我的] = + 1的[·]的[我]; 问[我]的[·] = / [我]; 如果(s i 1== 0)中断; } 返回[我]; } //求A、B的最大公约数 ---------------------------------- / * * / 国际m_develop(int p) { int m; 子宫内膜异位囊肿; 如果(m p) { cout “无法对输入的M进行签名,请重新输入” endl; M = m_develop(P); } 返回M; } 国际prime_k(int p) { k,i; K = rand() % P; 我= gcd(k,p); 如果(i)!= 1) { K = prime_k(P); } 返回K; } //随即数K的产生 ----------------------------------- / * * / 无效elg_sign_develop(int,int,int x,int m) { k; int = i 1; K = prime_k(p);//的随机数产生一个K,K与P-1互质 //(g k k)% P; 对于(i = 0;i ;k;+ +) { a = g; 一% = P; } //(m)!=(* X + K *)%(P-1)) //; 为(i = 0;i P-1;i++) { 乙=我; 如果((x * + K * B)%(P-1)= = m)打破; } k = 0;//丢弃随即数K cout 我“的数字签名是(“一个”,“B” endl)”; } //产生签名 ------------------- / * * / 无效elg_sign_test(y,int,int m,int,char的名字) { i,C1,D1,j; C1 = D1 = j = 1; i =((y))*((b)); 对于(i = 0;i a;+ +) { C1 * y; C1 = p; } 对于(i = 0;i b;+ +) { D1 = a; D1 = p; } D1 = C1; D1 = p; //; 对于(i = 0;i;m;i +) { j=G; j = P; } 如果(D1 = j) { cout “是用户”名“签名的 endl。”; } 其他的 { cout “不是用户”名“签名的” endl; } } //验证签名 ---------------

您可能关注的文档

文档评论(0)

f8r9t5c + 关注
实名认证
内容提供者

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

版权声明书
用户编号:8000054077000003

1亿VIP精品文档

相关文档