资源简介
一、编程/分析作业(1分)
使用C或C++实现RSA算法。提交源程序及测试结果。
调用开源密码算法库,使用RSA加密算法加密一个字符串。
调用开源密码算法库,使用Rabin加密算法加密一个字符串。
二、课后习题
5.5
5.7
5.9
5.14
5.16
5.17
5.23
注:
编程题任选其一
课后习题任选其二。
代码片段和文件信息
#include
#include
#include
#define RANDOM 1
#define UNIT 1
/* RANDOM and UNIT are used for creating random big integer */
using namespace std;
typedef __int64 SuperInt;
SuperInt random(void);
SuperInt quickPowMod(SuperInt aSuperInt bSuperInt r);
bool Miller_Rabbin(SuperInt n);
bool testPrime(SuperInt n);
SuperInt MultiplicativeInverse(SuperInt aSuperInt b); /* it is just to calculate b^(-1)mod a */
int main()
{
ofstream fout(“key.txt“);
BEGIN:SuperInt pqnabPhi_n;
srand(time(NULL));
while(1)
{
p=random();
q=random();
if(testPrime(p)&&testPrime(q))
break;
}
n=p*q;
Phi_n=(p-1)*(q-1);
while(1)
{
b=random();
if(b>1&&b {
a=MultiplicativeInverse(Phi_nb);
if(a>0) break;
}
}
if((a*b)%Phi_n!=1)
goto BEGIN; /* the A must be the right result of b^(-1)mod Phi(n) */
cout<<“public key is (“< cout<<“private key is (“< fout<<“public key is (“< fout<<“private key is (“< system(“pause“);
return 0;
}
SuperInt random(void)
{
int ij;
SuperInt result=0;
for(i=0;i {
SuperInt temp=1;
for(j=0;j temp=temp*UNIT;
result+=rand()*temp;
}
return result;
}
SuperInt quickPowMod(SuperInt aSuperInt bSuperInt r)
{
SuperInt ans=1buff=a;
while(b)
{
if(b&1)
ans=(ans*buff)%r;
buff=(buff*buff)%r;
b>>=1;
}
return ans;
}
bool Miller_Rabbin(SuperInt n)
{
SuperInt r=0s=n-1j;
SuperInt a=rand();
if(n%a==0)
return false;
while(!(s&1))
{
s>>=1;
r++;
}
SuperInt k=quickPowMod(asn);
if(k==1)
return true;
for(j=0;j if(k==n-1)
return true;
return false;
}
bool testPrime(SuperInt n)
{
for(int i=0;i<10;i++)
{
if(Miller_Rabbin(n)==0)
return false;
}
return true;
}
SuperInt MultiplicativeInverse(SuperInt aSuperInt b)
{
SuperInt tempA=atempB=btempT=0t=1;
SuperInt q=tempA/tempB;
SuperInt r=tempA-q*tempB;
while(r>0)
{
SuperInt temp=(tempT-q*t)%a;
tempT=t;
t=temp;
tempA=tempB;
tempB=r;
q=tempA/tempB;
r=tempA-q*tempB;
}
if(tempB!=1) return 0;
else return t;
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2013-06-27 23:26 RSA算法\
文件 68 2013-06-14 14:32 RSA算法\key.txt
文件 2672 2013-06-14 14:31 RSA算法\RSA密钥生成系统.cpp
文件 479782 2013-06-14 14:32 RSA算法\RSA密钥生成系统.exe
文件 2146 2013-06-14 16:02 RSA算法\RSA算法.cpp
文件 477593 2013-06-14 16:02 RSA算法\RSA算法.exe
文件 58880 2013-06-27 23:26 密码学作业.doc
相关资源
- 密码学 重合指数计算(IC.cpp)
- 扩展欧几里德算法c++代码
- 多表代换 加密解密 C语言实现
- DES算法C++实现.rar
- DES文件加密解密系统 密码学课设
- MMX-密码编码学:加密方法的C与C++实现
- 密码学:分组密码DES算法C语言版
- 密码学 模逆与模幂计算与应用 MFC实现
- 用C++模拟集中式密钥分配的过程
- 密码学差分密码解密程序实现
- c语言实现国密SM2
- 实现数字签名算法DSA,Hash算法的实现
- 密码学RSA 算法源码及大数运算的实现
- 用C语言实现的的全部的古典密码学算
- AES密码学课程设计带报告
- des差分攻击哦
- 用C语言实现SHA-1算法
- 维吉尼亚加密解密的C语言实现
- C语言实现计算乘法逆元
- 密码学快速取模指数算法C代码
- 简单的线性反馈移位寄存器LFSRC语言实
- 仿射加密现代密码学
- 软件学院密码学实验五
- 软件学院密码学实验四
- 软件学院密码学实验五sha
- 软件学院密码学实验四RSA
- 软件学院密码学实验三RC4
- 密码学MFC实现仿射加密解密超级计算
- 密码学基于RCB和CBC的RSA实现(c++)
- 密码学编程c++代码
评论
共有 条评论