91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 452KB
    文件類型: .zip
    金幣: 2
    下載: 0 次
    發布日期: 2024-01-31
  • 語言: 其他
  • 標簽: RSA??加解密??

資源簡介

實現 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?????{
????????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?????????Ciphertext[i]?=?Modular_Exonentiation(Plaintext[i]?e?n);

????cout<<“用公鑰(e?n)加密,密文為?:“< //用字符輸出?
????char?c[100];
????for(int?i?=?0;?i?????????c[i]=(char)Ciphertext[i];
????cout<}

//RSA解密
void?RSA_Decrypt()
{
????for(int?i?=?0;?i?????????Ciphertext[i]?=?Modular_Exonentiation(Ciphertext[i]?d?n);

????cout<<“用私鑰(d?n)解密,明文為:“< //字符輸出?
????char?c[100];
????for(int?i?=?0;?i?????????c[i]=(char)Ciphertext[i];
????cout<}

//算法初始化
void?Initialize()
{
????cout<<“請輸入需要加密的信息:“<????char?p[100];
????cin>>p;
????for(int?i?=?0;?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

評論

共有 條評論