文本串的应用(1)

一、文本串的加密解密操作

一个文本串可用事先给定的字母映射表进行加密。

例如,假设字母映射表为:

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;
}

执行结果

 

上一篇:Python——数据结构与算法-时间复杂度&空间复杂度-链表&树状结构


下一篇:webrtc agc2实现原理