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

RSAElGamal算法实现.doc

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

信息保障与安全 实验报告 学 院 计算机科学与技术 专 业 计算机科学与技术 年 级 2007级 姓 名 张炎辉 学 号 3007216108 2010年 4 月 28 日 1、试验题目 1.1题目 《简化RSA、ElGamal算法》 1.2具体要求 任务:(1) 编写一个程序实现简化RSA加密算法如图1; (2) 编写一个程序实现简化ElGamal加密算法如图2。 要求:两个程序都应该具有一个简单的输入{密钥长度,公开密钥,明文M/密文C}和输出{秘密密钥,密文C /明文M }界面。所有的输入输出数据用十进制表示。 1.3 测试用例 (1) 简化RSA加密 密钥长度=15 bits,N=pq=131×191=25021,e=3,d=16467,M=24021,C=14307。 (2) 简化ElGamal加密 密钥长度=14 bits,p=9973,α=11,y=5445,a=1751,M=7651,C={111520( 1028(mod 9973),5905}。 2、算法实现 2.1流程图 2.2测试结果 2.2.1 测试用例一 图一 开始界面 图二 密钥生成器 图三 加密 图四 解密 2.2.2测试用例二 图一 密钥生成器 图二 加密 图三 解密 3、代码实现 #includeiostream #includetime.h using namespace std; int gcd(long a,long b) { if(a b){ long temp = a; a = b; b = temp; } while(a%b){ long c = a%b; a = b; b = c; } return b; } /*RSA*/ void RSA_key_generate(long length,long p,long q,long n,long e,long d){ n = q * p; long t = (p - 1)*(q - 1); for(e = 2; gcd(e,t) != 1 ;e++); long de = 1; for(int k = 0;de%e != 0;k++){ de = de + t; } d = de/e; } int RSA_Encryption(long n,long e,long m){ long c = 1; for(int i = 1;i = e; i++) { c = c*m; if(c n) c = c%n; } return c; } int RSA_Decrypt(long n,long d,long c){ long m = 1; for(int i = 1;i = d; i++) { m = m*c; if(m n) m = m%n; } return m; } /**/ /*ElGamal*/ typedef struct r_t { long r; long t; }; void ElGamal_key_generate(long length,long p,long a,long x,long y) { y = 1; for(int i = 1;i = x;i++) { y = y*a; if(y p) y = y%p; } } r_t ElGamal_Encryption(long p,long a,long y,long m) { struct r_t rt; rt.r = 1; rt.t = m; /*random number*/ srand((unsigned)time(NULL)); int k = 1520;//rand()%1024; /**/ for(int i = 1;i = k; i++){ rt.r = rt.r*a; if(rt.r p){ rt.r = rt.r%p; } rt.t = rt.t*y; if(rt.t p){ rt.t = rt.t%p; } } return rt; } int E

文档评论(0)

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

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

1亿VIP精品文档

相关文档