如何在c++中使用循环和ascll码来制作加密解密器
时间: 2024-12-04 16:25:54 浏览: 17
在C++中,你可以通过循环结合ASCII码来实现简单的文本加密和解密。这是一种替换式加密技术,也被称为凯撒密码,因为最简单的版本就是将字母表向前或向后移动固定位数。以下是一个基础的例子:
1. **加密**:
- 定义一个整数变量 `shift` 来控制偏移量。
- 使用for循环遍历输入字符串中的每个字符。
- 对于每个字符,如果是大写字母(A-Z),计算其ASCII值加上偏移量(模26取余,确保结果仍在A-Z范围内),然后转换回字符。
- 如果是小写字母(a-z),同样操作并考虑大小写的区别。
```cpp
#include <iostream>
using namespace std;
char encrypt(char c, int shift) {
if ('a' <= c && c <= 'z') {
return static_cast<char>((c + shift - 'a') % 26 + 'a');
} else if ('A' <= c && c <= 'Z') {
return static_cast<char>((c + shift - 'A') % 26 + 'A');
}
// 不处理非字母字符
return c;
}
string encryptString(string str, int shift) {
string encrypted = "";
for (char c : str) {
encrypted += encrypt(c, shift);
}
return encrypted;
}
```
2. **解密**:
- 只需要将上述`encrypt`函数中的`shift`改为负数即可,例如 `-shift`。
为了运行这个例子,你需要用户输入原始字符串和偏移量。这里是一个完整的简单程序框架:
```cpp
int main() {
string plaintext;
cout << "请输入明文: ";
getline(cin, plaintext);
int shift;
cout << "请输入偏移量: ";
cin >> shift;
string ciphertext = encryptString(plaintext, shift);
cout << "加密后的密文: " << ciphertext << endl;
// 解密部分略...
return 0;
}
```
阅读全文