21xrx.com
2024-06-03 10:03:55 Monday
登录
文章检索 我的文章 写文章
「C++实现」凯撒加密算法
2023-06-24 03:02:45 深夜i     --     --
C++ 凯撒加密算法 加密 解密 字符串

凯撒加密算法是一种简单易懂的加密方法,可以将普通的文本转化为密文,防止他人窃取或查看数据内容。C++是一种非常流行的编程语言,在实现加密算法方面也有很好的性能和灵活性。

凯撒加密算法的原理很简单:将明文中的每个字符都加上同一个偏移量,得到密文。例如,将明文中的每个字符都向右移动3个位置,A变成D,B变成E,以此类推。解密的过程则是将密文中的每个字符都向左移动相同的偏移量。

下面是一个简单的C++程序,用于实现凯撒加密算法:


#include <iostream>

#include <cstring>

using namespace std;

// 声明加密和解密函数

string encrypt(string str, int shift);

string decrypt(string str, int shift);

int main()

{

  int shift;

  string str;

  // 输入明文和偏移量

  cout << "请输入明文:";

  getline(cin, str);

  cout << "请输入偏移量:";

  cin >> shift;

  // 加密

  string encrypted = encrypt(str, shift);

  cout << "加密后的密文:" << encrypted << endl;

  // 解密

  string decrypted = decrypt(encrypted, shift);

  cout << "解密后的明文:" << decrypted << endl;

  return 0;

}

// 加密函数

string encrypt(string str, int shift)

{

  string result = "";

  for (int i = 0; i < str.length(); i++)

  {

    if (isalpha(str[i]))

    {

      char c = (toupper(str[i]) - 'A' + shift) % 26 + 'A';

      result += c;

    }

    else

    {

      result += str[i];

    }

  }

  return result;

}

// 解密函数

string decrypt(string str, int shift)

{

  string result = "";

  for (int i = 0; i < str.length(); i++)

  {

    if (isalpha(str[i]))

    {

      char c = (toupper(str[i]) - 'A' - shift + 26) % 26 + 'A';

      result += c;

    }

    else

    {

      result += str[i];

    }

  }

  return result;

}

在上面的程序中,我们定义了两个函数:encrypt和decrypt。encrypt函数将明文加密成密文,decrypt函数将密文解密成明文。在加密和解密的过程中,只对字母进行操作,其他字符不受影响。

我们使用一个for循环来遍历明文和密文中的每一个字符。如果该字符是字母,则将其加上或减去偏移量。我们使用tolower和toupper函数来将字符转换为大写或小写字母,使得凯撒加密算法的统计规律更加固定。

最后,我们在main函数中通过输入明文和偏移量,调用encrypt和decrypt函数分别进行加密和解密,并输出结果。整个程序非常简单,但能实现基本的加密和解密功能。

总之,C++在实现加密算法方面有着非常好的性能和灵活性。凯撒加密算法是一种简单易懂的加密方法,在保证数据安全的同时,也方便我们进行数据的传输和交流。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复