古典密碼之乘法密碼


實驗目的

熟練掌握多表古典密碼簡單乘法加密算法原理及實現和應用。

實驗原理

將文明內容按照N個字符長度分成不同的分組,在各分組使用不同的變換規則,這種方式叫做多表替代密碼,也是凱撒密碼的擴展版本,就是在凱撒密碼的基礎之上將變換方式改變一下。

實驗內容

1、根據多表(雙表)古典密碼的乘法加密運算的算法,進行程序設計,寫出加密運算的代碼;

2、輸入模q(根據明文確定)及加密密鑰k1,k2對下列明文進行加法加密:

A graph is finite if both its vertex set and edge set are finite. In this book we study only finite graphs, and so the term ‘graph’ always means ‘finite graph’.

實驗環境描述

Windows 7, VC6.0

實驗步驟

學生登錄實驗場景的操作

1、 學生單擊 “開始實驗”進入實驗場景,進入目標主機。

2.找到桌面上的Microsoft Visual C++ 6.0,雙擊打開。

圖片描述

3.新建一個C++ Source File,文件名為chengfa。

圖片描述

4.寫代碼。 在工作區輸入代碼,如圖所示。

圖片描述

代碼如下:

#include

#include

#include

#include

main()

{

char M[200];

char C[200];

int K[200],q=26,i,j;

srand( (unsigned)time( NULL ) );

for(j=0;j<=200;j++)

{

K[j]=rand()%50;

}

printf("please input chars:n");

gets(M);

for(i=0;M[i]!='0';i++)

{

if(M[i]>='a'&&M[i]<='z')

{

C[i]=((M[i]-'a'+1)*K[i])%q+'a';

}

else if(M[i]>='A'&&M[i]<='Z')

{

C[i]=((M[i]-'A'+1)*K[i])%q+'A';

}

else

C[i]=M[i];

}

C[i]='0';

printf("The result is:n%sn",C);

getch();

return 0; }

5.編譯、構建與運行。

經過編譯與構建,發現這個程序是正確的,沒有出現錯誤,如圖所示。

圖片描述

6.點擊F5運行,會出現如圖所示對話框,要求用戶輸入明文。

圖片描述

7.那么只要輸入明文,就會得到經過乘法加密算法加密之后的密文了。

圖片描述

8.實驗結束,關閉實驗場景。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM