一、文本串的加密解密操作
一个文本串可用事先给定的字母映射表进行加密。
例如,假设字母映射表为:
a b c d e f g h i j k l m n o p q r s t u v w x y z
n g z q t c o b m u h e l k p d a w x f y i v r s j
则字符串“encrypt”被加密为“tkzwsdf”
代码所需要引用的头文件
#include <iostream>
#include <string>
#include <unordered_map>
using namespace std;
初始化加密和解密的映射表
unordered_map<char, char> createEncryptMap() {
unordered_map<char, char> encryptMap;
string original = "abcdefghijklmnopqrstuvwxyz";
string mapped = "ngzqtcbmuhlekpdawxfyivrsj";
for (int i = 0; i < original.size(); i++) {
encryptMap[original[i]] = mapped[i];
}
return encryptMap;
}unordered_map<char, char> createDecryptMap() {
unordered_map<char, char> decryptMap;
string original = "abcdefghijklmnopqrstuvwxyz";
string mapped = "ngzqtcbmuhlekpdawxfyivrsj";
for (int i = 0; i < original.size(); i++) {
decryptMap[mapped[i]] = original[i];
}
return decryptMap;
}
加密函数和解密函数
string encrypt(const string& input, unordered_map<char, char>& encryptMap) {
string encryptedText;
for (char c : input) {
if (isalpha(c)) {
encryptedText += encryptMap[tolower(c)];
}
else {
encryptedText += c; // 保留非字母字符
}
}
return encryptedText;
}string decrypt(const string& input, unordered_map<char, char>& decryptMap) {
string decryptedText;
for (char c : input) {
if (isalpha(c)) {
decryptedText += decryptMap[tolower(c)];
}
else {
decryptedText += c; // 保留非字母字符
}
}
return decryptedText;
}
主函数
int main() {
// 初始化加密和解密映射表
unordered_map<char, char> encryptMap = createEncryptMap();
unordered_map<char, char> decryptMap = createDecryptMap();string text;
cout << "输入原文串: ";
getline(cin, text);// 加密
string encryptedText = encrypt(text, encryptMap);
cout << "加密串: " << encryptedText << endl;// 解密
string decryptedText = decrypt(encryptedText, decryptMap);
cout << "解密串: " << decryptedText << endl;return 0;
}
执行结果