900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > [古典密码]:Caesar cipher(凯撒密码)

[古典密码]:Caesar cipher(凯撒密码)

时间:2022-08-10 09:17:55

相关推荐

[古典密码]:Caesar cipher(凯撒密码)

来源于我的博客

非常简单的消息编码方式,仅仅是将字母后移3位,而X Y Z右移就回到A B C.

加密的话就是简单的加三取模即可;解密就是其反过程。

C++实现如下:

#include#include#includeusingnamespacestd;stringnencrypted={"Thingsarenotalwayswhattheysee"};stringncrypted;voidencrypt(string&unencrypted,string&encrypted){encrypted.resize(unencrypted.size());for(inti=0;i<unencrypted.size();i++){if((int)unencrypted[i]>64&&(int)unencrypted[i]<91){encrypted[i]=(char)((((int)unencrypted[i]-65+3)%26)+65);//减去65+3取模可得到后移三位的ascii(大写)}elseif((int)unencrypted[i]>96&&(int)unencrypted[i]<123){encrypted[i]=(char)((((int)unencrypted[i]-97+3)%26)+97);//减去97+3取模可得到后移三位的ascii(小写)}else{encrypted[i]=unencrypted[i];}}}voiddecrypt(string&encrypted,string&decrypted){decrypted.resize(encrypted.size());for(inti=0;i<encrypted.size();i++){if((int)encrypted[i]>64&&(int)encrypted[i]<91){decrypted[i]=(char)((((int)encrypted[i]-65-3+26)%26)+65);//减去65-3取模可得到前移三位的ascii(大写)//加26使其非负}elseif((int)encrypted[i]>96&&(int)encrypted[i]<123){decrypted[i]=(char)((((int)encrypted[i]-97-3+26)%26)+97);//减去97-3取模可得到前移三位的ascii(小写)//加26使其非负}else{decrypted[i]=encrypted[i];}}}intmain(){encrypt(nencrypted,ncrypted);cout<<ncrypted<<endl;decrypt(ncrypted,nencrypted);cout<<nencrypted<<endl;return0;}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。