RSA算法实验代码

RSA算法实验代码

ID:38168582

大小:26.49 KB

页数:7页

时间:2019-06-06

RSA算法实验代码_第1页
RSA算法实验代码_第2页
RSA算法实验代码_第3页
RSA算法实验代码_第4页
RSA算法实验代码_第5页
资源描述:

《RSA算法实验代码》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、RSA算法实验代码#include#defineMAX_NUM63001#defineMAX_PRIME251//!返回代码#defineOK100#defineERROR_NOEACHPRIME101#defineERROR_NOPUBLICKEY102#defineERROR_GENERROR103unsignedintMakePrivatedKeye(unsignedintuiP,unsignedintuiQ);unsignedintGetPrivateKeye(unsignedinti

2、Which);unsignedintMakePairkey(unsignedintuiP,unsignedintuiQ,unsignedintuiD);unsignedintGetPairKey(unsignedint&d,unsignedint&e);intrsa_encrypt(intn,inte,intmw,intp,intq);intrsa_decrypt(intn,intd,intcw,intp,intq);voidoutputkey();//! 保存私钥d集合structpKeyset{unsign

3、edintset[MAX_NUM];unsignedintsize;}pset;//!保存公、私钥对structpPairkey{unsignedintd;unsignedinte;unsignedintn;}pairkey;//名称:isPrime//功能:判断两个数是否互质//参数:m:数a;n:数b//返回:m、n互质返回true;否则返回falseboolisPrime(unsignedintm,unsignedintn){unsignedinti=0;boolFlag=true;if(m<2

4、

5、n<2

6、)returnfalse;unsignedinttem=(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:

7、素数Q//返回:私钥dunsignedintMakePrivatedKeye(unsignedintuiP,unsignedintuiQ){unsignedinti=0;//!得到所有与z互质的数(私钥d的集合)unsignedintz=(uiP-1)*(uiQ-1);pset.size=0;for(i=0;i

8、数:uiP:素数P;uiQ:素数Q;uiD:私钥d//返回:错误代码unsignedintMakePairkey(unsignedintuiP,unsignedintuiQ,unsignedintuiD){boolbFlag=true;unsignedinti=0,d;unsignedintz=(uiP-1)*(uiQ-1);unsignedinte=pset.set[uiD];if(!isPrime(z,e))returnERROR_NOEACHPRIME;for(i=2;i

9、z==1){d=i;bFlag=false;}}if(bFlag)returnERROR_NOPUBLICKEY;if((d*e)%z!=1)ERROR_GENERROR;pairkey.d=d;pairkey.e=e;pairkey.n=uiP*uiQ;returnOK;}//名称:GetPairKey//功能:对外提供接口,获得公、私钥对//参数:uiP:素数P;uiQ:素数Q;uiD:私钥d//返回:unsignedintGetPairKey(unsignedint&d,unsignedint&e){d=

10、pairkey.d;e=pairkey.e;returnpairkey.n;}//名称:GetPrivateKeye//功能:对外提供接口,由用户选择ID得以私钥d//参数:iWhich:用户选择公钥e的ID//返回:私钥d值unsignedintGetPrivateKeye(unsignedintiWhich){if(pset.size>=iWhich)returnpset.set[

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。