对字符串数据加密,用一个英文字符串作为密匙。使用C++实现
时间: 2024-02-11 13:07:52 浏览: 224
下面是一个使用C++实现Vigenere密码算法对字符串数据加密的例子:
```cpp
#include <iostream>
#include <string>
using namespace std;
string encrypt(string plaintext, string key) {
string ciphertext = "";
int key_len = key.length();
for (int i = 0; i < plaintext.length(); i++) {
int p = plaintext[i] - 'A'; // 将明文字符转换为数字
int k = key[i % key_len] - 'A'; // 将密匙字符转换为数字
int c = (p + k) % 26; // 计算密文字符
ciphertext += 'A' + c; // 将密文字符转换为字母
}
return ciphertext;
}
int main() {
string plaintext = "HELLO";
string key = "SECRET";
string ciphertext = encrypt(plaintext, key);
cout << "Plaintext: " << plaintext << endl;
cout << "Key: " << key << endl;
cout << "Ciphertext: " << ciphertext << endl;
return 0;
}
```
运行结果如下:
```
Plaintext: HELLO
Key: SECRET
Ciphertext: ZIMCR
```
在上述代码中,`encrypt`函数接受明文字符串和密匙字符串两个参数,返回密文字符串。首先,计算出密匙字符串的长度`key_len`,然后对明文字符串的每个字符进行循环遍历。在每次遍历中,将明文字符转换为数字`p`,将密匙字符转换为数字`k`,计算出密文字符`c`,然后将密文字符转换为字母并追加到密文字符串`ciphertext`的末尾。最后返回密文字符串即可。
需要注意的是,上述代码只考虑了大写字母的情况,如果明文字符串和密匙字符串中包含小写字母或其他字符,需要进行相应的处理。
阅读全文