亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? rsa.c

?? 加密解密現(xiàn)代密碼學(xué)的內(nèi)容c語言編寫uoto
?? C
字號:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
unsigned long  n;    /* n=p*q ,n為公鑰和私鑰的一部分*/
int e,d;             /*e為公鑰的一部分,d為私鑰的一部分*/
unsigned p,q;        /*p,q為大素數(shù)*/
unsigned char text_8[100];  /*存放用戶輸入的明文(每8bit一存儲)*/
unsigned text_16[100],secu_16[100];  /*分別存放用戶輸入的明文(每16bit一存儲),和分組密文(每16bit一存儲)*/
void public_key_product();           /*計算共鑰中的e,并產(chǎn)生大素數(shù)p和q,以及n,顯示e,n*/
void person_key_product();           /*計算私鑰中的d*/
int gcd(unsigned long,unsigned long); /*此函數(shù)判斷a和b是否互素(利用歐幾里得輾轉(zhuǎn)相除)*/
unsigned power(unsigned,unsigned,unsigned long); /*此函數(shù)計算"a的b次方對c求余"*/
void convert_16_to_8(unsigned a[100]);
 /*此函數(shù)的作用是將明文每16bit一存儲還原為每8bit一存儲,變化后的結(jié)果存放在text_8[],即將結(jié)果還原為char型*/
void convert_8_to_16(); /*此函數(shù)的作用是將明文每8bit一存儲變?yōu)槊?6bit一存儲,變化后的結(jié)果存放在text_16[]*/ 
void coder();       /*加密*/
void decoder();     /*解密*/
void get();          /*此函數(shù)獲取用戶輸入的明文*/





main()
{

 while(getch()!='e')
 {
  clrscr();

  printf("Please enter your text to coded:\n");
  get();    /*獲取用戶輸入的明文*/
  public_key_product();    /*計算共鑰中的e,并產(chǎn)生大素數(shù)p和q,以及n,顯示e,n*/
  person_key_product();    /*計算私鑰中的d*/
  coder();                 /*加密*/
  printf("\n\nThe text after code is:\n%s",text_8); /*顯示密文*/
  printf("\n\np is: %lu\n",p);
  printf("\n\nq is: %lu\n",q);
  printf("\nThe private key is: (d=%d,n=%lu)",d,n);    /*顯示d和n*/
  decoder();               /*解密*/
  printf("\n\nThe plaintext after decode is\n%s",text_8);
  getch();

 }
}



void get()
{
 /*此函數(shù)獲取用戶輸入的明文*/
 printf("Enter the text('e' to exit):\n");
 scanf("%s",text_8);
}







int gcd(unsigned long a,unsigned long b)
{
 /*此函數(shù)判斷a和b是否互素(利用歐幾里得輾轉(zhuǎn)相除)*/
 unsigned long c;
 if(a>=b)
 {
  c=a%b;
  if(c==0)
       return 0;    /*a和b不互素*/
    else if (c==1)
       return 1;    /*a和b互素*/
  else gcd(b,c);
  }
  else gcd(b,a);
}




void public_key_product()         
{
 /*計算共鑰中的e,并產(chǎn)生大素數(shù)p和q,以及n,顯示e,n*/

 srand(time(NULL));    /*隨機函數(shù)*/

 e=3;  /*初始化共鑰中的e*/
 p=2*(rand()%50000)+1+30000; /*根據(jù)RSA算法要求,此處隨機產(chǎn)生的p一定是奇數(shù)*/
 while(!is_number(p)&&p<65536); /*如果p不是素數(shù)且沒有越界,則取比p大且離p最近的奇數(shù)p+2繼續(xù)測素*/
 {
  p+=2;
 }
 q=2*(rand()%10000)+1+30000; /*此處用random(10000),是為了保證p和q大小上有一定差距,使加密算法安全*/
 while(!is_number(q)&&q<65536);/*根據(jù)RSA算法要求,此處隨機產(chǎn)生的q一定是奇數(shù)*/
 {                              /*如果q不是素數(shù)且沒有越界,則取比q大且離q最近的奇數(shù)q+2繼續(xù)測素*/
  q+=2;
 }
 n=(unsigned long )p*(unsigned long)q;  /*求出n*/
 while(!gcd((unsigned long )(p-1)*(unsigned long )(q-1),e))  /*找出與n的歐拉函數(shù)值互素的e*/
 e++;
 printf("\nThe public key is: (e=%d,n=%lu)",e,n);  /*e和n共同作為共鑰*/
}




void person_key_product()        
{
 /*此函數(shù)求出私鑰中的d*/
 int i=1;
 while((((p-1)*(q-1)*i+1)%e)&&i>0)  
    i++;                             
 d=((p-1)*(q-1)*i+1)/e;
  /*設(shè)n的歐拉函數(shù)為a(n),則a(n)=(p-1)*(q-1). 當a(n)+1=k*e(k為某個整數(shù))時,退出循環(huán)*/
  /*此時,a(n)+1=k*e,即k*e=1*a(n)+1.所以在模a(n)條件下,k*e與1同余,這其中k就是所求的*/
  /*私鑰中的d. d=(k*e)/e=(a(n)+1)/e=((p-1)*(q-1)*i+1)/e   */
}







int is_number(unsigned n)
{
  /*此函數(shù)對傳入的n進行素性檢驗*/
  /*傳入的n一定是奇數(shù),但不一定是素數(shù)*/

 unsigned m=1,b=0,a,j=n-1,i,z;
  while(!j%2)  /* !的優(yōu)先級高于%, 所以只有當j=0即n=1時,才進這個循環(huán)*/
   {
    m*=2;
    b++;
    j/=2;
   }
   m=(n-1)/m;         /*j!=0時(這是大多數(shù)情況),經(jīng)過此步后,m=n-1,b=0*/
   a=random(n-1);     /*a小于等于n-1*/
   for(j=0;j<1000;j++)  /*用作測試的數(shù)a只有取夠一定數(shù)量,才可說明n是素數(shù) */
   {
    a+=2;
    if(a>2)
    {
     i=0;
     z=power(a,m,n); /*求"a的m次方對n求余"的值(j!=0時,m=n-1)*/
     if((z!=1)&&(z!=(p-1)))  /*由Fermat定理知,z!=1說明n不是素數(shù)*/
         return 0;           /*此處判斷z與p-1的關(guān)系是為了下面j=0時的特別處理*/

      while((i<b)&&(z!=(p-1)))  /*對j=0的情況特別處理(一般用不到)*/
      {

       if((i>0)&&(z==1))
          return 0;
         z=power(z,2,p);
         i+=1;
       }
      if(z!=(p-1))return 0;
     }
     return 1;
   }

}






unsigned power(unsigned a,unsigned b,unsigned long c)
{
 /*此函數(shù)計算"a的b次方對c求余"*/

 unsigned long z=1,t;
 for(t=a;b>0;b>>=1)
 {
  /*每輪循環(huán)b右移1位是為了控制循環(huán)次數(shù),可如下等價理解:*/
  /*將b寫成二進制形式:m_k,m_k-1,m_k-2------m_0.其中k就是循環(huán)次數(shù)*/

  /* 在以下的注釋中: "a(mk)"代表"a的mk次方","(a)(b)"代表"a的b次方",*/
  /* "[a]*[b]"代表"a*b"*/

  /* 此函數(shù)的原理是:*/
  /* b寫成二進制形式后,"a的b次方"=a(b)=[(a(m_k))(2(k))]*[(a(m_k-1))(2(k-1))]*   */
  /* [(a(m_k-2))(2(k-2))]----*[(a(m_0))(2(0))].由此可見m_i=0的項的值=1,因此這一項*/
  /* 不用累乘到"a的b次方"中,只有當m_i=1時,才將[(a(mi))(2(i))]累乘到"a的b次方"中*/

   if(b%2==1)z=(z*t)%c;  /*z用來存放當前的"a的b次方"*/

   /* "b%2==1"說明b是奇數(shù).當b是奇數(shù)時,b的二進制表示的最低位是1.又因為每次循環(huán)b*/
   /* 都右移1位,因此此時b的最低位其實是傳入此函數(shù)的b的二進制表示的第j位*/
   /* j表示當前的循環(huán)次數(shù),從0開始,二進制表示的位數(shù)從0開始. */

   /*對于傳入此函數(shù)的b, 若其二進制表示第j位為1,即mj=1,則根據(jù)上面提到的此函數(shù)的*/
   /*原理,應(yīng)將mj,mj-1,mj-2-------m0表示的十進制數(shù)(即[(a(mj))(2(j))])累乘到z中*/
   /*而[(a(mj))(2(j))]就是t*/

   t=(t*t)%c;

   /* 此函數(shù)實際操作時:*/
   /* t存放當前"a的i次方"的值(i=1,2,3----k)*/
   /* [(a(m))(2(i))]的值*/

  }
  return z;
 }



void convert_8_to_16()
{
  /*此函數(shù)的作用是將明文每8bit一存儲變?yōu)槊?6bit一存儲,變化后的結(jié)果存放在text_16[]*/ 
  /*這樣做可以使加密的分組減少*/
 int i;
 for(i=0;i<100;i++)
  text_16[i]=text_8[2*i]*256+text_8[2*i+1]; 
 
  /*text_8[]是char型數(shù)組,因此text_8[i]為8bit*/
  /*所以text_8[2*i]+text_8[2*i+1]為16bit*/
  /*text_8[2*i]*256只是做了一個簡單的線性變換,不影響加密*/
}

void convert_16_to_8(unsigned a[100])
{
   /*此函數(shù)的作用是將明文每16bit一存儲還原為每8bit一存儲,變化后的結(jié)果存放在text_8[],即將結(jié)果還原為char型*/
   /*這主要是為了用戶察看加密和解密結(jié)果的方便,因為char會對應(yīng)某一個字符*/
  int i=0,flag=0;
  unsigned temp;
  while(i<200&&flag<100)
  {
   temp=a[flag]/256;  
   text_8[i]=temp;
   text_8[i+1]=a[flag]%256;
   i+=2;
   flag++;
  }

  /*這個函數(shù)是convert_8_to_16函數(shù)的逆變換*/
  /*由函數(shù)convert_8_to_16可知,a[i]=text_8[2*i]*256+text_8[2*i+1]. 由整數(shù)的相關(guān)定理可得:若a=k*b+c,則有 */
  /* a/k=b, a%k=c .所以,text_8[i]=a[flag]/256 , text_8[i+1]=a[flag]%256.  */
 
}



void coder()
{
 /*此函數(shù)為加密過程*/
 int i;
 i=0;
 convert_8_to_16();     /*詳見convert_8_to_16函數(shù)體說明*/
 while(text_16[i]!=0)
 {
 secu_16[i]=power(text_16[i],e,n); /*每16bit分組一加密,分組密文存放在secu_16[i]中*/
 i++;
 }
 convert_16_to_8(secu_16);   /*詳見convert_16_to_8函數(shù)體說明*/
}

void decoder()
{
 /*此函數(shù)為解密過程*/
 int i;
 i=0;
 while(secu_16[i]!=0)
 {
 text_16[i]=power(secu_16[i],d,n);   /*每16bit分組一解密,分組明文存放在text_16[i]中*/
 i++;
 }
 convert_16_to_8(text_16);     /*詳見convert_16_to_8函數(shù)體說明*/
}


?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕综合网| 欧美一级午夜免费电影| 久久综合九色综合97婷婷| 天天爽夜夜爽夜夜爽精品视频| 色就色 综合激情| 亚洲婷婷在线视频| 色婷婷精品久久二区二区蜜臀av| 国产精品久久久久久久久动漫| 懂色av一区二区三区免费看| 中文字幕一区av| 色综合久久中文综合久久97| 亚洲国产欧美在线| 欧美一级xxx| 国产乱理伦片在线观看夜一区| 欧美zozozo| 国产999精品久久久久久绿帽| 亚洲国产精品精华液2区45| 不卡区在线中文字幕| 一区二区在线观看视频| 欧美精品在线视频| 狠狠网亚洲精品| 国产精品美女一区二区三区| 色域天天综合网| 日韩影视精彩在线| 久久午夜色播影院免费高清| 91在线观看美女| 天堂一区二区在线| 久久精品视频免费| 在线日韩av片| 久草中文综合在线| 国产精品国产精品国产专区不片| 欧美在线999| 精品一区二区免费视频| 成人欧美一区二区三区1314| 国产精品天美传媒| 在线一区二区三区四区五区| 久久精品国产精品亚洲红杏| 国产精品女主播在线观看| 欧美午夜精品免费| 精品一区二区国语对白| 亚洲欧美日韩一区二区三区在线观看| 91精品国产品国语在线不卡| 99国产精品久久久久| 日日噜噜夜夜狠狠视频欧美人 | 久久久精品人体av艺术| 色婷婷国产精品| 国产精品一二三四五| 亚洲成人激情社区| 国产精品免费aⅴ片在线观看| 欧美一区二区三区成人| 色综合天天综合在线视频| 国产在线国偷精品免费看| 亚洲成人在线网站| 中文字幕一区免费在线观看| 日韩三级电影网址| 91女人视频在线观看| 亚洲欧美视频在线观看| 欧美成人在线直播| 91视频.com| 精品影院一区二区久久久| 中文字幕在线不卡| 日韩一级免费观看| 一本一本久久a久久精品综合麻豆| 日韩精品91亚洲二区在线观看| 亚洲人吸女人奶水| 天天综合天天综合色| 欧美精品一区二区三区四区 | 日本久久一区二区| 精品亚洲国产成人av制服丝袜| 亚洲同性gay激情无套| 欧美一区二区三区免费视频| 色综合久久久久综合99| 精品一区二区在线看| 亚洲国产高清在线| 国产亚洲精品bt天堂精选| 欧美日韩成人综合天天影院| 成人a区在线观看| 激情欧美一区二区三区在线观看| 亚洲一区二区三区三| 国产精品丝袜久久久久久app| 欧美一区二区视频免费观看| 91成人免费电影| 成人av电影免费观看| 韩国一区二区在线观看| 天天色天天操综合| 中文在线资源观看网站视频免费不卡| 91精品在线一区二区| 91福利社在线观看| 99久久精品国产导航| 国产精品 欧美精品| 久久黄色级2电影| 日韩精彩视频在线观看| 亚洲综合激情网| 亚洲激情图片小说视频| 国产乱妇无码大片在线观看| 亚洲欧美二区三区| 欧美性高清videossexo| 成人精品国产一区二区4080| 黑人巨大精品欧美一区| 久久成人免费电影| 日韩av一二三| 日本aⅴ精品一区二区三区 | 亚洲黄色小视频| 91麻豆精品国产自产在线 | 欧美精品少妇一区二区三区| 亚洲成人av电影在线| 精品捆绑美女sm三区| 在线这里只有精品| 99天天综合性| 成人动漫中文字幕| 成人综合婷婷国产精品久久| 一区二区成人在线| 国产精品久久国产精麻豆99网站| 欧美影院一区二区| 99久久99久久精品免费看蜜桃| 久久99精品国产.久久久久| 另类小说一区二区三区| 一区二区三区四区蜜桃| 884aa四虎影成人精品一区| 一区二区三区91| 欧美一级高清大全免费观看| 毛片av一区二区| 久久综合色之久久综合| 国产精品自拍一区| 国产在线视频一区二区三区| 免费在线看一区| 国产在线观看免费一区| 国产.精品.日韩.另类.中文.在线.播放| 日本视频中文字幕一区二区三区| 亚洲va天堂va国产va久| 丰满少妇久久久久久久| 视频一区二区三区在线| 国模冰冰炮一区二区| 精品国产免费一区二区三区四区| 99九九99九九九视频精品| 在线观看亚洲成人| 日韩一级片网址| 国产网站一区二区三区| 亚洲日本成人在线观看| 亚洲成人av一区二区| 亚洲v精品v日韩v欧美v专区| 国产乱码精品一区二区三| 99精品国产99久久久久久白柏 | 成人影视亚洲图片在线| 一本高清dvd不卡在线观看| 91精品国产综合久久精品app| 久久久久久一二三区| 亚洲免费观看高清完整版在线| 轻轻草成人在线| 97精品久久久久中文字幕| 欧美日产国产精品| 日本一区二区综合亚洲| 亚洲色图欧美激情| 午夜天堂影视香蕉久久| 成人一区二区三区中文字幕| 欧美一区二区三区色| 中文字幕一区二区不卡| 蜜桃精品视频在线| 91丨porny丨国产| 久久久精品黄色| 性久久久久久久| av综合在线播放| 精品噜噜噜噜久久久久久久久试看| 亚洲欧美激情插 | 日本在线不卡视频一二三区| 国产成人精品免费网站| 欧美精品在欧美一区二区少妇| 一区免费观看视频| 亚洲国产一二三| 成人美女视频在线观看| 日韩午夜激情视频| 一区二区三区国产| 丁香激情综合五月| 26uuu另类欧美亚洲曰本| 日韩在线一区二区| 91啦中文在线观看| 亚洲欧洲国产专区| 国产成人免费在线| 久久蜜臀中文字幕| 另类小说欧美激情| 91精品国产乱| 日韩二区在线观看| 欧美日韩午夜在线视频| 亚洲精品菠萝久久久久久久| www.色综合.com| 精品国产一二三| 久久精品国产在热久久| 日韩视频一区在线观看| 日韩精品一级中文字幕精品视频免费观看 | 天堂一区二区在线| 欧美亚洲一区二区在线观看| 亚洲精品五月天| a级高清视频欧美日韩| 国产精品久久毛片a| 国产**成人网毛片九色 | 亚洲国产另类av| 欧美在线999| 亚洲成a人片在线不卡一二三区| 在线免费观看不卡av| 怡红院av一区二区三区|