RSA算法实验代码.docx

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

RSA算法实验代码#includestdio.h#define MAX_NUM 63001#define MAX_PRIME 251//! 返回代码#define OK 100#define ERROR_NOEACHPRIME 101#define ERROR_NOPUBLICKEY 102#define ERROR_GENERROR 103unsignedintMakePrivatedKeye( unsignedintuiP, unsignedintuiQ );unsignedintGetPrivateKeye( unsignedintiWhich );unsignedintMakePairkey( unsignedintuiP, unsignedintuiQ, unsignedintuiD );unsignedintGetPairKey( unsignedint d, unsignedint e );intrsa_encrypt( int n, int e, intmw,intp,int q);intrsa_decrypt( int n, int d, intcw, intp,int q);voidoutputkey();//! 保存私钥d集合structpKeyset{unsignedint set[ MAX_NUM ];unsignedint size;}pset;//! 保存公、私钥对structpPairkey{unsignedint d;unsignedint e;unsignedint n;}pairkey;// 名称:isPrime// 功能:判断两个数是否互质// 参数:m: 数a; n: 数b// 返回:m、n互质返回true; 否则返回falseboolisPrime( unsignedint m, unsignedint n ){unsignedint i=0;bool Flag = true;if( m2 || n2 )returnfalse;unsignedint tem = ( m n ) ? n : m;for( i=2; i=tem Flag; i++ ){boolmFlag = true;boolnFlag = true;if( m % i == 0 )mFlag = false;if( n % i == 0 )nFlag = false;if( !mFlag !nFlag )Flag = false;}if( Flag )returntrue;elsereturnfalse;}// 名称:MakePrivatedKeye// 功能:由素数P、Q生成公钥e// 参数:uiP: 素数P; uiQ: 素数Q// 返回:私钥dunsignedintMakePrivatedKeye( unsignedintuiP, unsignedintuiQ ){unsignedint i=0;//! 得到所有与z互质的数( 私钥d的集合 )unsignedint z = ( uiP -1 ) * ( uiQ -1 );pset.size = 0;for( i=0; iz; i++ ){if(isPrime( i, z ) ){pset.set[pset.size++ ] = i;}}returnpset.size;}// 名称:MakePairKey// 功能:生成RSA公、私钥对// 参数:uiP: 素数P; uiQ: 素数Q; uiD: 私钥d// 返回:错误代码unsignedintMakePairkey( unsignedintuiP, unsignedintuiQ, unsignedintuiD ){boolbFlag = true;unsignedint i = 0, d;unsignedint z = ( uiP-1 ) * ( uiQ-1 );unsignedint e = pset.set[uiD];if( !isPrime( z, e ) )return ERROR_NOEACHPRIME;for( i=2; iz; i++ ){if( (i*e)%z == 1 ){d = i;bFlag = false;}}if(bFlag )return ERROR_NOPUBLICKEY;if( (d*e)%z != 1 )ERROR_GENERROR;pairkey.d = d;pairkey.e = e;pairkey.n = uiP * uiQ;return OK;}// 名称:GetPairKey// 功能:对外提供接口,获得公、私钥对// 参数:uiP: 素数P; uiQ: 素数Q; uiD: 私钥d// 返回:unsignedintGetPairKey( unsignedi

文档评论(0)

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

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档