愷撒加密描述:利用凱撒密碼進(jìn)行加密

1 題目

功能:愷撒加密描述:利用凱撒密碼進(jìn)行加密

2 凱撒密碼

維基百科對凱撒密碼的解釋:https://zh.wikipedia.org/wiki/%E5%87%B1%E6%92%92%E5%AF%86%E7%A2%BC

凱撒密碼是一種替換加密技術(shù),明文中的所有字母都在字母表上向后(或向前)按照一個(gè)固定數(shù)目進(jìn)行偏移后被替換成密文。例如,當(dāng)偏移量是3的時(shí)候,所有的字母A將被替換成D,B變成E,以此類推

例如,當(dāng)偏移量是左移3的時(shí)候(解密時(shí)的密鑰就是3):

明文字母表:ABCDEFGHIJKLMNOPQRSTUVWXYZ

密文字母表:DEFGHIJKLMNOPQRSTUVWXYZABC

3 代碼

# include <stdio.h>

# include <string.h>

/**

功能:愷撒加密

描述:利用凱撒密碼進(jìn)行加密

**/

voidencode(charstr[],intn) {

charc;

inti;

for(i=0;i<strlen(str);i++) {

c=str[i];

if(c>='a'&&c<='z')

if(c+n%26<='z')

str[i]=(char)(c+n%26);

else

str[i]=(char)('a'+((n-('z'-c)-1)%26));

elseif(c>='A'&&c<='Z')

if(c+n%26<='Z')

str[i]=(char)(c+n%26);

else

str[i]=(char)('A'+((n-('Z'-c)-1)%26));

else

str[i]=c;

?? }

printf("\nout:");

puts(str);

}

voiddecode(charstr[],intn) {

charc;

inti;

for(i=0;i<strlen(str);i++) {

c=str[i];

if(c>='a'&&c<='z')

if(c-n%26>='a')

str[i]=(char)(c-n%26);

else

str[i]=(char)('z'-(n-(c-'a')-1)%26);

elseif(c>='A'&&c<='Z')

if(c-n%26>='A')

str[i]=(char)(c-n%26);

else

str[i]=(char)('Z'-(n-(c-'A')-1)%26);

else

str[i]=c;

?? }

printf("\nout:");

puts(str);

}

intmain(intargc,charconst*argv[]) {

voidencode(charstr[],intn);

voiddecode(charstr[],intn);

//char str[]="abcdef";

charstr[20];

intk=0,n=0,i=1;

printf("\nPlease input strings:");

scanf("%s",str);

printf("\n1:Encryption");

printf("\n2:Decryption");

printf("\n3:Violent Crack");

printf("\nPlease choose:");

scanf("%d",&k);

if(k==1) {

printf("\nPlease input number:");

scanf("\n%d",&n);

encode(str,n);

?? }

elseif(k==2) {

printf("\nPlease input number:");

scanf("%d",&n);

decode(str,n);

?? }

elseif(k==3) {

for(i=1;i<=25;i++) {

printf("%d ",i);

decode(str,1);

? ? ?? }

?? }

}

示例結(jié)果:

$ gccex080.c-odemo

$ ./demo

Please input strings:python

1:Encryption

2:Decryption

3:Violent Crack

Please choose:1

Please input number:1

out:qzuipo

該例子中有以下三種選擇,結(jié)合上述對于凱撒密碼的原理,試著進(jìn)行理解

Encryption

Decryption

Violent Crack

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容