21xrx.com
2025-04-03 07:53:32 Thursday
文章检索 我的文章 写文章
C++编写凯撒密码程序
2023-07-02 04:31:24 深夜i     11     0
C++ 凯撒密码 编写程序

凯撒密码是一种简单的加密方法,它是通过将明文中的每个字母都移动固定的位置来加密的。这个固定值被称为“偏移量”或“密钥”。如果偏移量是3,那么明文中的每个字母都要向右移动3个位置。例如,字母A加密后变成了D,字母B加密后变成了E,以此类推。

C++是一种广泛使用的编程语言,非常适合用于编写加密程序。在本文中,我们将介绍如何使用C++编写凯撒密码程序来加密和解密文本。

首先,我们需要声明一个整数变量来存储偏移量。这个变量将被用于加密和解密过程中,以便将字母移动到正确的位置。我们可以使用以下代码声明这个变量:

int shift = 3; // 3是一个偏移量

接下来,我们需要声明一个字符串变量来存储明文和密文。这个变量将被用于存储我们要加密和解密的文本。我们可以使用以下代码声明这个变量:

string plaintext = "hello world"; // 明文
string ciphertext = ""; // 密文

明文是我们想要加密的原始文本,这里我们将其设置为“hello world”。密文是我们将要输出的加密后的文本,因此现在还没有内容。

接下来,我们需要遍历明文中的每个字符,并将它们移动到正确的位置上。我们可以使用以下代码来完成这个任务:

for (int i = 0; i < plaintext.length(); i++) {
  if (isalpha(plaintext[i])) { // 只对字母进行加密
    if (isupper(plaintext[i])) { // 大写字母
      ciphertext += char(int(plaintext[i] + shift - 65) % 26 + 65);
    }
    else { // 小写字母
      ciphertext += char(int(plaintext[i] + shift - 97) % 26 + 97);
    }
  }
  else { // 非字母字符
    ciphertext += plaintext[i];
  }
}

在这段代码中,我们使用了一个for循环来遍历明文中的每个字符。使用isalpha()函数来检查该字符是否为字母。如果是字母,我们使用isupper()函数来检查它是否为大写字母。如果是大写字母,则将它转换为小写字母,并使用ASCII码的差值来计算它在移动后的位置。否则,我们就使用相同的方法将它移动到正确的位置上。最后,我们将移动后的字母添加到密文字符串中。

最后,我们需要使用以下代码输出加密后的文本:

cout << "密文: " << ciphertext << endl;

现在,我们已经完成了凯撒密码的加密过程,整个代码如下:

#include <iostream>
#include <string>
using namespace std;
int main() {
  int shift = 3; // 偏移量
  string plaintext = "hello world"; // 明文
  string ciphertext = ""; // 密文
  for (int i = 0; i < plaintext.length(); i++) {
    if (isalpha(plaintext[i])) {
      if (isupper(plaintext[i])) {
        ciphertext += char(int(plaintext[i] + shift - 65) % 26 + 65);
      }
      else {
        ciphertext += char(int(plaintext[i] + shift - 97) % 26 + 97);
      }
    }
    else {
      ciphertext += plaintext[i];
    }
  }
  cout << "密文: " << ciphertext << endl;
  return 0;
}

如果我们想要解密密文,我们只需要将偏移量变为负数即可。例如,如果偏移量为3,则-3就是解密时要使用的偏移量。

总的来说,C++是一种非常适合编写加密程序的语言,并且凯撒密码是一种简单而有效的加密方法。通过上面的代码,您可以开始编写自己的凯撒密码程序,以保护您的私人信息。

  
  

评论区

请求出错了