Caesar 密码解密算法 - C++ 代码实现
Caesar 密码解密算法 - C++ 代码实现
在密码学中,Caesar 密码是一种非常简单的加密算法。它通过将字母表中的每个字母向后移动固定数量的位置来实现加密。例如,如果密钥为 'c',则 'a' 将被加密为 'd','b' 将被加密为 'e',以此类推。
本文将介绍如何使用 C++ 代码实现 Caesar 密码的解密算法。
算法原理
Caesar 密码解密算法的原理与加密算法相反,即将密文中的每个字母向前移动与密钥相同的数量位置。例如,如果密钥为 'c',则 'd' 将被解密为 'a','e' 将被解密为 'b',以此类推。
C++ 代码实现
#include <bits/stdc++.h>
using namespace std;
int main() {
char c;
string s;
cin >> c >> s;
for (int i = 0; i < s.size(); i++) {
if (s[i] >= 'a' && s[i] <= 'z') {
s[i] = s[i] - 'a' + c - 'a';
if (s[i] > 25) s[i] -= 26;
s[i] += 'a';
}
if (s[i] >= 'A' && s[i] <= 'Z') {
s[i] = s[i] - 'A' + c - 'a';
if (s[i] > 25) s[i] -= 26;
s[i] += 'A';
}
}
cout << s << endl;
return 0;
}
代码解释
- 代码首先从标准输入流中读取密钥
c和密文s。 - 然后使用循环遍历密文中的每个字符。
- 对于每个字符,代码判断其是否为小写字母或大写字母。
- 如果是字母,代码将该字符的 ASCII 码值减去 'a' 或 'A' 的 ASCII 码值,然后加上密钥
c的 ASCII 码值减去 'a' 的 ASCII 码值,最后再加上 'a' 或 'A' 的 ASCII 码值,以实现向前移动密钥位置的操作。 - 如果移动后的 ASCII 码值大于 25 或 90,则需要减去 26 或 26,以确保字母在 ASCII 码表中的正常范围。
- 最后,代码将解密后的密文输出到标准输出流。
使用方法
- 将上述代码保存为一个名为
caesar.cpp的文件。 - 打开命令行终端,进入到该文件所在的目录。
- 使用
g++ caesar.cpp -o caesar命令编译代码,生成可执行文件caesar。 - 使用
./caesar命令运行可执行文件。 - 在命令行中输入密钥和密文,并按下回车键,即可得到解密后的明文。
例子
例如,如果输入的密钥为 'C',密文为 'Yjgtgvjgtgkucyknnvjgtgkucyca',则运行该代码将得到解密后的明文 'Wherethereisawillthereisaway'。
总结
本文介绍了 Caesar 密码解密算法的原理,并提供了 C++ 代码实现,可用于解密长度不超过 1000 个字符的密文。该代码简单易懂,易于理解和使用。
原文地址: https://www.cveoy.top/t/topic/jCZR 著作权归作者所有。请勿转载和采集!