?? weonigema.c
字號:
#define NUM 100
#define NUMKEY 100
main()
{ char key1[NUMKEY]; /*中間變量,用于存放臨時信息*/
char key[NUMKEY]; /*用于存放密鑰信息*/
char code[NUM]; /*用于存放明文信息*/
char encode[NUM]; /*用于存放密文信息*/
int i,numb,numbkey,temp1,temp2;
printf("Please input the figure of key:(<=%d)\n",NUMKEY-1); /*數組首元素key1[0]由回車占據,并非用戶所輸入的字符*/
scanf("%d",&numbkey);
printf("Please input the key(=%d)\n",numbkey); /*數組首元素key1[0]由回車占據,并非用戶所輸入的字符,若要實現numbkey個明文密文對就需要i<=numbkey*/
for(i=0;i<=numbkey;i++) /*由用戶輸入輸入密鑰*/
scanf("%c",&key1[i]);
for(i=0;i<numbkey;i++) /*重新存儲便于使用*/
key[i]=key1[i+1];
printf("Please input the figure of numbes:(<=%d)\n",NUM-1); /*數組首元素code[0]由回車占據,并非用戶所輸入的字符*/
scanf("%d",&numb);
printf("Please input codes:(the figure=%d)\n",numb);
for(i=0;i<=numb;i++) /*數組首元素code[0]由回車占據,并非用戶所輸入的字符,若要實現numb個明文密文對就需要i<=numb*/
{ scanf("%c",&code[i]); /*用戶輸入字符,其實code[0]為回車字符,從code[1]開始才是用戶輸入的字符,所以用戶輸入的字符只有NUM-1個*/
temp1=key[(i-1)%numbkey]-96; /*定位密鑰字符在字母表中的位置*/
temp2=(code[i]-96+temp1-1)%26; /*根據維吉尼亞碼的生成算法定位密文字母在字母表中的位置*/
if(temp2==0)
encode[i]=96+26; /*將密文轉化為ASCII碼,若取余為0,則密文相對位置為26,要特別處理*/
else
encode[i]=96+temp2; /*將密文轉化為ASCII碼,若取余<26,則ASCII碼為96+在字母表中的相對位置*/
}
printf("the encrypted numbes:\n");
for(i=1;i<=numb;i++)
printf("%c",encode[i]); /*將轉化后的密文輸出 */
getch();
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -