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

經(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在线免费观看| 人妻久久一区二区三区精品99 | 亚洲免费观看视频一区二区三区| 久久国产亚洲欧美一区| 免费日韩黄片在线观看| 亚洲国产视频不卡一区| 午夜一区二区三区精品| 成人精品播放视频在线观看| 久久这里有精品免费观看| 欧美成人一区二区三区片| 91口爆吞精国产对白| 亚洲免费视频一二三区| 日韩国产欧美色资源在线| 中文字幕欧美日韩人妻| 国产在线播放精品视频| 亚洲区自拍偷拍一区二区 | 中文字幕人成乱码在线观看| 一区二区三区四区毛片| av免费观看男人的天堂| 二区三区在线欧美日韩| 日本东京热二三四区不卡免费的| 欧美v日韩v亚洲综合国产高清| 日韩精品一区二区三区中文| 中文字幕人妻秘书社长| 国产欧美日韩午夜激情| 伊人久久亚洲精品综合| 亚洲中文字幕精品视频乱码| 日本欧美一区中文字幕| 日韩欧美中文字幕区| 日本女优久久精品观看| 欧美黄片完整版在线观看| 亚洲中文无码亚洲人vr在线| 国产日产亚洲欧美综合另类 | 我想看亚洲一级黄色录像| 国产久精品热看久品热久热| 一区二区三区免费在线观看视频| 亚洲香蕉一区二区免费| 国产精品毛片视频一区二区| 欧美特黄大片在线观看|