欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

經(jīng)典密碼學(xué)——行置換加密法

很多教材上對(duì)于行置換密碼、列置換密碼的定義都不是完全相同,甚至核心思想根本不一樣。筆者就自己學(xué)習(xí)的經(jīng)歷,簡單介紹一種一些教材上所謂的“行置換密碼”的算法,大家一起交流、探討。

創(chuàng)新互聯(lián)是專業(yè)的淮濱網(wǎng)站建設(shè)公司,淮濱接單;提供網(wǎng)站制作、成都網(wǎng)站制作,網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行淮濱網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!

 

利用這種加密方法,明文按行填寫在一個(gè)矩陣中,而明文則是以預(yù)定的順序按列讀取生成的。例如如果矩陣是4列5行,那么明文“encryption algorithm”(省去空格后)可以如下寫入該矩陣:

2 3 1 4
e n c r
y p t i
o n a l
g o r i
t h m s

 

按一定的順序讀取列以生成密文。

對(duì)于這個(gè)示例,如果讀取順序?yàn)檫f增順序,則明文就是:“ctarm eyogt npnoh rilis”(添加空格只是為了便于觀察)。這種加密法的密鑰是列數(shù)和讀取列的順序。如果列數(shù)很多,記起來可能會(huì)比較困難,因此它可以表示成一個(gè)關(guān)鍵詞,該關(guān)鍵詞的長度等于列數(shù),而其字母順序決定讀取列的順序。

例如,關(guān)鍵詞“general”有7個(gè)字母,意味著矩陣有7列。由于“a”是“general”中字母順序最低的,因此數(shù)字1放在第6列;從左往右,第一個(gè)“e”為其次,所以數(shù)字2放在第2列;第二個(gè)“e”則是使數(shù)字3放在第4列。最后的順序如下:

g  e  n  e  r  a  l

4  2  6  3  7  1  5

_______________________________________________________________________________________

This scheme is to write the message in a rectangle, row by row, and read the message off, column by column, but permute the order of the columns.The order of the columns then becomes the key to the algorithm.For example, 

            Key:    4   3   1   2   5   6   7

      Plaintext:    a   t   t   a   c   k   p

                    o   s   t   p   o   n   e

                    d   u   n   t   i   l   t

                    w   o   a   m   x   y   z

     Ciphertext:  ttna aptm tsuo aodw coix knly petz (再次強(qiáng)調(diào),空格只是為了便于觀察)

Thus, in this example, the key is 4312567.To encrypt, start with the column that is labeled 1, in this case column 3. Write down all the letters in that column.

**************************************************************************************

上述的是一次加密,也可把上述密文當(dāng)做新一輪加密的明文,再次進(jìn)行行置換加密。

 

參考資料:

《Cryptography and Network Security Principles and Practice, Fifth Edition》

                                               ————William Stallings

《Classical And Contemporary Cryptology》      ————Richard Spillman

 

 

  1. //Z26上的行置換密碼 
  2. #include<stdio.h> 
  3. #include<string.h> 
  4. #include<stdlib.h> 
  5. #include<time.h> 
  6. int length;//明文長度 
  7. char plain[100000]; 
  8. char cipher[100000]; 
  9. char out[100000]; 
  10. int l;//密鑰長度 
  11. int key[100];//密鑰 
  12. int done_key[100]= {0}; //標(biāo)記是否已經(jīng)被轉(zhuǎn)換為數(shù)字 
  13. int num_key[100]= {0};//把密鑰換成數(shù)字 
  14. int num[100];//臨時(shí)矩陣,存放使順序遞增的下標(biāo)序號(hào) 
  15. void gen();//密鑰生成算法 
  16. void encryption(); 
  17. void decryption(); 
  18. int length_str(int a[]); 
  19. int main() 
  20.     int i; 
  21.     FILE *fp; 
  22.     fp=fopen("plain.txt", "r"); 
  23.     fscanf(fp, "%s", plain);//從文件讀入明文 
  24.     fclose(fp); 
  25.     length=strlen(plain); 
  26.     gen(); 
  27.     encryption(); 
  28.     printf("以上正確"); 
  29.     decryption(); 
  30.      for(i=0;i<length;i++) 
  31.     { 
  32.         printf("%c", out[i]); 
  33.     } 
  34.     return 0; 
  35.  
  36. void gen()//密鑰生成算法 
  37.     int i; 
  38.     printf("請(qǐng)輸入想生成的隨機(jī)密鑰的長度:"); 
  39.     scanf("%d", &l); 
  40.     srand(time(0)); 
  41.     for(i=0; i<l; i++) 
  42.     { 
  43.         key[i]=rand()%26; 
  44.     } 
  45.     printf("\n隨機(jī)產(chǎn)生的密鑰串為:"); 
  46.     for(i=0; i<l; i++) 
  47.     { 
  48.         printf("%c ", key[i]+97); 
  49.     } 
  50.     printf("\n\n"); 
  51. char a[50000][100];//臨時(shí)矩陣,為了更方便的把密文轉(zhuǎn)換出來 
  52. //這個(gè)數(shù)組必須設(shè)置為全局的,在函數(shù)中聲明的話申請(qǐng)內(nèi)存會(huì)出錯(cuò)!!! 
  53. void encryption() 
  54.     ///轉(zhuǎn)換:把密鑰字符串排序,變成數(shù)字 
  55.     int k=1; 
  56.     int i, j, m; 
  57.     int small;//每輪循環(huán)給"最小"的字母編號(hào)(未編號(hào)的、靠前的、序號(hào)小的字母為最小) 
  58.     for(i=0; i<l; i++) //把字母換成從1開始的數(shù)字 
  59.     { 
  60.         m=0; 
  61.         while(done_key[m]==1) 
  62.             m++; 
  63.         small=m; 
  64.         for(j=0; j<l; j++) 
  65.         { 
  66.             if(done_key[j]==0)//沒轉(zhuǎn)換則繼續(xù) 
  67.                 if(key[j]<key[small]) 
  68.                     small=j; 
  69.         } 
  70.         num_key[small]=k; 
  71.         done_key[small]=1; 
  72.         k++; 
  73.     }// 
  74.     printf("The order of the key is :\n"); 
  75.     for(i=0; i<l; i++) 
  76.     { 
  77.         printf("%d ", num_key[i]); 
  78.     } 
  79.     printf("\n"); 
  80.     for(i=0; i<length; i++) //忽略非字母字符,把大寫轉(zhuǎn)換為小寫 
  81.     { 
  82.         if(plain[i]>=65&&plain[i]<=90) 
  83.         { 
  84.             plain[i]+=32; 
  85.         } 
  86.     } 
  87.     while(length%l) 
  88.     { 
  89.         strcat(plain,"p");//不能整除時(shí)補(bǔ)上無效字符p 
  90.         length++; 
  91.     } 
  92.     //生成密文矩陣 
  93.     k=0; 
  94.  
  95.     for(i=0; i<length/l; i++) //行 
  96.         for(j=0; j<l; j++) //列 
  97.         { 
  98.             a[i][j]=plain[k++]; 
  99.         } 
  100.     k=0; 
  101.     for(i=0;i<l;i++)//列 
  102.     { 
  103.         for(j=0;j<l;j++) 
  104.             if(num_key[j]==i+1) 
  105.                 num[i]=j; 
  106.     } 
  107.     k=0; 
  108.     for(m=0;m<l;m++)//列 
  109.         for(j=0;j<length/l;j++)//行 
  110.             cipher[k++]=a[j][num[m]]; 
  111. char b[50000][100]; 
  112. void decryption()//解密函數(shù) 
  113.     int i, j, k; 
  114.     k=0; 
  115.     for(i=0;i<l;i++)//num[i]作為列 
  116.         for(j=0;j<length/l;j++)//行 
  117.             b[j][num[i]]=cipher[k++]; 
  118.     k=0; 
  119.     for(i=0;i<length/l;i++)//行 
  120.         for(j=0;j<l;j++)//列 
  121.             out[k++]=b[i][j]; 

 //同文件夾下需要有“plain.txt”文件,里面必須全部是英文字母,可大小寫混雜,但是不能出現(xiàn)其他字符,如空格、回車換行、數(shù)字等。

 

文章名稱:經(jīng)典密碼學(xué)——行置換加密法
網(wǎng)頁地址:http://aaarwkj.com/article30/pdhiso.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營銷推廣、ChatGPT營銷型網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)、云服務(wù)器、動(dòng)態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)
久久精品国产亚洲av麻豆网站| 久久久国产精品久久久| 日本乱码一区二区三区在线观看| 亚洲欧美日韩1区2区| 日韩50岁老女人骚色| 日吊视频在线免费观看| 日韩不卡在线观看免费| 国产三级网站在线观看播放| 久草手机福利在线观看| 中文有码人妻字幕在线| 一区二区三区国产欧美日本| 91免费视频精品麻豆| 欧美精品国产亚洲另类| 精品国产一区二区成人| 国产精品久久99一区| 中文字幕人妻系列东京热| 成人免费毛片内射视频| 成人自拍偷拍在线视频| 欧美日韩在线观看不卡视频| 99精品欧美一区二区三区视频| 亚洲精品在线观看毛片| 成人性生交大片免费看中文 | 国产二区三区在线播放| 久久精品国产亚洲av高清不卡| av毛片高清在线观看| 色婷婷久久五月中文字幕| 伊人激情一区二区三区| 高颜值美女后入内射视频| 久久热这里只有视频精品| 日本一级二级三级在线看| 日韩欧美精品一区二区三区四区| 午夜免费福利视频一区| 一区二区先锋深夜中文字幕| 亚洲精品欧美综合第四区| 精品亚洲一区二区三区四| 日韩精品极品在线免费视频| 色综合婷婷九月中文字幕| 老司机看片午夜久久福利| 高清av中文免费在线| 亚洲经典日韩欧美一区| 麻豆精品国产一区二区91|