用c++语言实现凯撒密码
时间: 2024-10-15 11:13:42 浏览: 28
凯撒密码是一种简单的加密技术,它通过将明文中的每个字母按照固定的偏移量进行替换来达到加密目的。在C++中实现凯撒密码,你可以创建一个函数接受输入字符串、偏移量以及操作模式(加密或解密)。下面是一个基础的示例:
```cpp
#include <iostream>
#include <string>
std::string caesar_cipher(const std::string& text, int shift, bool encrypt) {
std::string result = "";
const char alphabet[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; // 使用大写字母
for (char c : text) {
if (isalpha(c)) { // 检查字符是否为字母
auto index = (c >= 'A' && c <= 'Z') ? c - 'A' : c - 'a'; // 获取字母在字母表中的位置
if (encrypt) {
index = (index + shift) % 26; // 加密时移动位数
} else {
index = (index - shift + 26) % 26; // 解密时反向移动位数
}
result += alphabet[index]; // 用新的字母替换
} else {
result += c; // 非字母字符不变
}
}
return result;
}
int main() {
std::string plaintext = "HELLO";
int shift = 3;
std::cout << "Original Text: " << plaintext << std::endl;
std::string ciphertext = caesar_cipher(plaintext, shift, true); // 加密
std::cout << "Encrypted Text: " << ciphertext << std::endl;
ciphertext = caesar_cipher(ciphertext, shift, false); // 解密
std::cout << "Decrypted Text: " << ciphertext << std::endl;
return 0;
}
```
在这个例子中,`caesar_cipher`函数接收三个参数:输入文本、偏移量和加密标志。如果加密标志为真,会将字母向前移动指定的位数;反之则向后移动。非字母字符保持原样。
阅读全文