c++实现凯撒密码加解密
时间: 2024-10-12 07:08:55 浏览: 43
C++实现简单凯撒加密解密算法
4星 · 用户满意度95%
凯撒密码是一种简单的替换加密技术,通过将字母表中的每个字符按照固定位移进行替换。在 C++ 中实现凯撒密码,你可以创建两个函数:`encrypt` 和 `decrypt`,分别用于加密和解密字符串。以下是基本步骤:
```cpp
#include <iostream>
#include <string>
// 函数用于移动字符
char shift(char ch, int key) {
if ('A' <= ch && ch <= 'Z') { // 大写字母
return static_cast<char>((ch - 'A' + key) % 26 + 'A');
} else if ('a' <= ch && ch <= 'z') { // 小写字母
return static_cast<char>((ch - 'a' + key) % 26 + 'a');
}
// 处理非字母字符不变
return ch;
}
// 加密函数
std::string encrypt(const std::string& plaintext, int key) {
std::string ciphertext;
for (char ch : plaintext) {
ciphertext += shift(ch, key);
}
return ciphertext;
}
// 解密函数
std::string decrypt(const std::string& ciphertext, int key) {
return encrypt(ciphertext, -key); // 使用相反的键值解密
}
int main() {
std::string message = "Hello, World!";
int key = 3; // 例如使用偏移量3
std::cout << "Original message: " << message << "\n";
std::string encrypted = encrypt(message, key);
std::cout << "Encrypted message: " << encrypted << "\n";
std::string decrypted = decrypt(encrypted, key);
std::cout << "Decrypted message: " << decrypted << "\n";
return 0;
}
```
在这个例子中,`shift` 函数负责处理单个字符的加密,`encrypt` 对整个字符串进行加密,而 `decrypt` 则使用相同的原理对加密后的字符串进行解密,只是关键相反。
阅读全文