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;
}

代码解释

  1. 代码首先从标准输入流中读取密钥 c 和密文 s
  2. 然后使用循环遍历密文中的每个字符。
  3. 对于每个字符,代码判断其是否为小写字母或大写字母。
  4. 如果是字母,代码将该字符的 ASCII 码值减去 'a' 或 'A' 的 ASCII 码值,然后加上密钥 c 的 ASCII 码值减去 'a' 的 ASCII 码值,最后再加上 'a' 或 'A' 的 ASCII 码值,以实现向前移动密钥位置的操作。
  5. 如果移动后的 ASCII 码值大于 25 或 90,则需要减去 26 或 26,以确保字母在 ASCII 码表中的正常范围。
  6. 最后,代码将解密后的密文输出到标准输出流。

使用方法

  1. 将上述代码保存为一个名为 caesar.cpp 的文件。
  2. 打开命令行终端,进入到该文件所在的目录。
  3. 使用 g++ caesar.cpp -o caesar 命令编译代码,生成可执行文件 caesar
  4. 使用 ./caesar 命令运行可执行文件。
  5. 在命令行中输入密钥和密文,并按下回车键,即可得到解密后的明文。

例子

例如,如果输入的密钥为 'C',密文为 'Yjgtgvjgtgkucyknnvjgtgkucyca',则运行该代码将得到解密后的明文 'Wherethereisawillthereisaway'。

总结

本文介绍了 Caesar 密码解密算法的原理,并提供了 C++ 代码实现,可用于解密长度不超过 1000 个字符的密文。该代码简单易懂,易于理解和使用。

Caesar 密码解密算法 - C++ 代码实现

原文地址: https://www.cveoy.top/t/topic/jCZR 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录