资源简介
实现 RSA 密码体制 :
1、编写程序构造一 RSA 密钥;
2、编写程序实现快速指数算法;
3、编写程序生成大素数;
4、实现 RSA 密码体制。
代码片段和文件信息
#include
#include
#include
#include
#include
using namespace std;
int Plaintext[100];//明文
long long Ciphertext[100];//密文
int n e = 0 d;
//二进制转换
int BianaryTransform(int num int bin_num[])
{
int i = 0 mod = 0;
//转换为二进制,逆向暂存temp[]数组中
while(num != 0)
{
mod = num%2;
bin_num[i] = mod;
num = num/2;
i++;
}
//返回二进制数的位数
return i;
}
//快速指数算法 ,反复平方求幂
long long Modular_Exonentiation(long long a int b int n)
{
int c = 0 bin_num[1000];
long long d = 1;
int k = BianaryTransform(b bin_num)-1;
for(int i = k; i >= 0; i--)
{
c = 2*c;
d = (d*d)%n;
if(bin_num[i] == 1)
{
c = c + 1;
d = (d*a)%n;
}
}
return d;
}
//生成1000以内素数
int ProducePrimeNumber(int prime[])
{
int c = 0 vis[1001];
memset(vis 0 sizeof(vis));
for(int i = 2; i <= 1000; i++)if(!vis[i])
{
prime[c++] = i;
for(int j = i*i; j <= 1000; j+=i)
vis[j] = 1;
}
return c;
}
//欧几里得扩展算法
int Exgcd(int mint nint &x)
{
int x1y1x0y0 y;
x0=1; y0=0;
x1=0; y1=1;
x=0; y=1;
int r=m%n;
int q=(m-r)/n;
while(r)
{
x=x0-q*x1; y=y0-q*y1;
x0=x1; y0=y1;
x1=x; y1=y;
m=n; n=r; r=m%n;
q=(m-r)/n;
}
return n;
}
//RSA初始化
void RSA_Initialize()
{
//取出1000内素数保存在prime[]数组中
int prime[5000];
int count_Prime = ProducePrimeNumber(prime);
//随机取两个素数pq
srand((unsigned)time(NULL));
int ranNum1 = rand()%count_Prime;
int ranNum2 = rand()%count_Prime;
int p = prime[ranNum1] q = prime[ranNum2];
n = p*q;
int On = (p-1)*(q-1);
//用欧几里德扩展算法求ed
for(int j = 3; j < On; j+=1331)
{
int gcd = Exgcd(j On d);
if( gcd == 1 && d > 0)
{
e = j;
break;
}
}
if(e)
{
cout<<“生成的公钥为 (e n) : e = “< cout<<“生成的私钥为 (d n) : d = “< }
}
//RSA加密
void RSA_Encrypt()
{
for(int i = 0; i < 100; i++)
Ciphertext[i] = Modular_Exonentiation(Plaintext[i] e n);
cout<<“用公钥(e n)加密,密文为 :“< //用字符输出
char c[100];
for(int i = 0; i < 100; i++)
c[i]=(char)Ciphertext[i];
cout< }
//RSA解密
void RSA_Decrypt()
{
for(int i = 0; i < 100; i++)
Ciphertext[i] = Modular_Exonentiation(Ciphertext[i] d n);
cout<<“用私钥(d n)解密,明文为:“< //字符输出
char c[100];
for(int i = 0; i < 100; i++)
c[i]=(char)Ciphertext[i];
cout< }
//算法初始化
void Initialize()
{
cout<<“请输入需要加密的信息:“< char p[100];
cin>>p;
for(int i = 0; i < 100; i++)
Plaintext[i]=p[i];
cout< }
int main()
{
Initializ
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 3251 2017-10-14 12:08 RSA\RSA_lxk.cpp
文件 1924619 2017-10-14 12:08 RSA\RSA_lxk.exe
- 上一篇:信息安全数学基础习题答案裴定一
- 下一篇:Peersim研究资料
相关资源
- yafu暴力分解
- 毕业设计-RSA算法(源代码+论文+ppt
- delphi下用Lockbox中rsa进行加解密的范例
- linux c 使用openssl实现SHA1WithRSA实现,签
- AES加解密工具支持16进制.zip
- Learning Generative Adversarial Networks 无水印
- 论文研究 - 气象对印度两个大城市的
- AES加解密算法的FPGA优化设计
- Learning Generative Adversarial Networks
- AES加解密aes128/192/256 ecb cbc cfb ofb ctr
- Universalimageloader
- openssl-0.9.8k_WIN32(RSA密钥生成工具)
- Learning Generative Adversarial Networks epub
- DES和RSA混合加密算法的研究
- xxtea加解密工具win32
- 信息安全实验:利用Windows CryptoAPI开发
- DevExpress DXperience Universal 11.2.7 官方地
- AES加解密算法软件程序包含全部模式
- DXperienceUniversal 9.3.3 part132010年2月1日版
- UVM实用指南-A Practical Guide to Adopting
- openssl绿色版
- DXPerience Universal 12.1.8 注册插件
- 基于GMSSL的SM9签名,密钥交换,加密,
- 随机生成大素数
- Generative Adversarial nets鉴赏.pdf
- Learninggenerativeadversarialnetworks.pdf
- IBM Rational Software Architect建模.pdf
- 易语言 异或封包加解密助手1.2 模块
- 绿盟RSAS技术说明书
- RSA公私钥生成工具 RSA秘钥生成工具
评论
共有 条评论