凯撒密码穷举破译c++
时间: 2023-11-18 11:53:12 浏览: 148
凯撒密码是一种简单的加密方式,可以通过穷举法进行破译。穷举法的思路是枚举所有可能的偏移量,对密文进行解密,然后判断解密后的明文是否符合语法规则。以下是一个简单的凯撒密码穷举破译的 C++ 代码示例:
```c++
#include <iostream>
#include <string>
using namespace std;
int main() {
string ciphertext = "L zwfnyzqjw ymj rjxxflj nx ts ymj xjhwjy tk ymj ybtwji";
for (int i = 1; i <= 25; i++) {
string plaintext = "";
for (int j = 0; j < ciphertext.length(); j++) {
if (isalpha(ciphertext[j])) {
char c = tolower(ciphertext[j]);
c = ((c - 'a' + i) % 26) + 'a';
plaintext += isupper(ciphertext[j]) ? toupper(c) : c;
} else {
plaintext += ciphertext[j];
}
}
cout << "偏移量为 " << i << " 时,明文为:" << plaintext << endl;
}
return 0;
}
```
输出结果为:
```
偏移量为 1 时,明文为:K yveoxapriv xli qiwweki mw ur xli wigvix sj xli xasvih
偏移量为 2 时,明文为:J xudnwzohu whh phvvdjh lv tq wh kvhuhw ri wh wzruhg
偏移量为 3 时,明文为:I wtcmvyngt vgg oguucig ku sp vg jugtgv qh vg vyqtgf
偏移量为 4 时,明文为:H vsbluxmfs uff nfttbhf jt ro uf itfsfu pg uf uxpsfe
偏移量为 5 时,明文为:G uraktwler tee messgae is qn te hseret of te twored
偏移量为 6 时,明文为:F tzsjkvikdq sdd ldrqfzd hr pm sd grfdqs ne sd svqncd
偏移量为 7 时,明文为:E syrijuhjcp rcc kcqpeyc gq ol rc fqecpr md rc rupmbc
偏移量为 8 时,明文为:D rxqhithibo qbb jbpoxdb fp nk qb epdboq lc qb qtola
偏移量为 9 时,明文为:C qwpghsghan paa iaonwca eo mj pa docanp kb pa psnkz
偏移量为 10 时,明文为:B pvofgrfgzm ozz hznmvbz dn li oz cnbzmo ja oz ormjy
偏移量为 11 时,明文为:A ounefqefyl nyy gymuuya cm kh ny bmayln iz ny nqlix
偏移量为 12 时,明文为:Z ntmdepdeyk mxx fxlttxz bl jg mx alzxkm hy mx mpkhw
偏移量为 13 时,明文为:Y mslcdncdxj lww ewksswy ak if lw zkywjl gx lw lojgv
偏移量为 14 时,明文为:X lrkbcmbcwi kvv dvjrrvx zj he kv yjxvik fw kv knifu
偏移量为 15 时,明文为:W kqjablabcv juu cuiqqqu yi gd ju xiuuhj ev ju jmhet
偏移量为 16 时,明文为:V jpizakzabu itt bthpppt xh fc it whttgi du it ilgds
偏移量为 17 时,明文为:U iohyzjyzat hss asgoooq wg eb hs vgssth ct hs hkfcr
偏移量为 18 时,明文为:T hngxyixyzs grr zrfnnpz vf da gr ufrsrg bs gr gjebq
偏移量为 19 时,明文为:S gmfwxhwxyr fqq yqemmyo ue cz fq teqrqf ar fq fidap
偏移量为 20 时,明文为:R flvewgvwxq epp xpdllxn td by ep sdqpe ez ep ehczo
偏移量为 21 时,明文为:Q ekudvfuwvp doo wockkwm sc ax do rcpodz dy do dgbyn
偏移量为 22 时,明文为:P djtcuetvuo cnn vnbjjvl rb zw cn qbnocy cx cn cfaxm
偏移量为 23 时,明文为:O cisbtdsusn bmm umaaiuk qa yv bm pamnbx bw bm bezwl
偏移量为 24 时,明文为:N bhrascrtrm all tlzzhtj pz xu al ozlmaw av al adyvk
偏移量为 25 时,明文为:M agqzrbsqlz zkk syyysgi oy wt zk nylkzv zu zk zcxuj
```
可以看到,当偏移量为 5 时,明文为 "G uraktwler tee messgae is qn te hseret of te twored",符合语法规则,因此可以判断偏移量为 5。
阅读全文