[古典密码]:Caesar cipher(凯撒密码)
2016-09-10 14:49
405 查看
来源于我的博客
非常简单的消息编码方式,仅仅是将字母后移3位,而X Y Z右移就回到A B C.
加密的话就是简单的加三取模即可;解密就是其反过程。
C++实现如下:
非常简单的消息编码方式,仅仅是将字母后移3位,而X Y Z右移就回到A B C.
加密的话就是简单的加三取模即可;解密就是其反过程。
C++实现如下:
#include#include#includeusing namespace std; string nencrypted = { "Things are not always what they see" }; string ncrypted; void encrypt(string &unencrypted,string &encrypted) { encrypted.resize(unencrypted.size()); for (int i = 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(大写) } else if ((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]; } } } void decrypt(string &encrypted, string &decrypted) { decrypted.resize(encrypted.size()); for (int i = 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使其非负 } else if ((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]; } } } int main() { encrypt(nencrypted, ncrypted); cout << ncrypted << endl; decrypt(ncrypted, nencrypted); cout << nencrypted << endl; return 0; }
相关文章推荐
- 古典密码算法 凯撒(Caesar)密码,又叫循环移位密码
- [古典密码]:PlayFair cipher(Playfair密码)
- [古典密码]:Hill cipher(希尔密码)
- [古典密码]:Vigenere cipher 维吉尼亚密码
- 四种古典密码的C++实现(4)-----Caesar密码
- 密码学学习记录(二)古典密码学之仿射密码
- [Cryptography]The Caesar Cipher
- 古典密码-多表密码体制
- Python HAIL CAESAR (凯撒密码) 3
- POJ 1026 Cipher 密码问题
- Caesar 密码(POJ NO.1976)
- 西普实验吧密码学CTF--古典密码的安全性不高,但仍然十分美妙,请破译下面的密文
- 第四十九篇: JAVA加密解密之凯撒加密(Caesar cipher)算法
- 古典密码之hill密码的加密与解密程序实现
- 古典密码学
- poj百炼&nbsp;2975:Caesar&nbsp;密码
- POJ 2975 Caesar密码 解题报告
- Caesar密码
- 实验吧-古典密码
- 密码学基础知识(三)古典密码