四维加密算法

加密算法:

#include <bits/stdc++.h>
using namespace std;
string encrypt(const string &input, const vector<int> &key) {
    string encrypted = input;
    int keySize = key.size();
    int inputSize = input.size();
    for (int i = 0; i < inputSize; ++i)
        encrypted[i] = char(int(input[i] + key[i % keySize]) % 256);
    return encrypted;
}
int main() {
    int a[4] = {};
    cout << "密钥:";
    scanf("%1d%1d%1d%1d" ,&a[0] ,&a[1] ,&a[2] ,&a[3]);
    vector<int> encryptionKey = {a[0] ,a[1] ,a[2] ,a[3]};
    ifstream inputFile("input.txt");
    ofstream outputFile("encrypted_output.txt");
    if (!inputFile.is_open() || !outputFile.is_open()) {
        cerr << "文件打开错误!";
        return 404;
    }
    string inputContent((istreambuf_iterator<char>(inputFile)),(istreambuf_iterator<char>()));
    string encryptedContent = encrypt(inputContent, encryptionKey);
    outputFile << encryptedContent;
    inputFile.close();
    outputFile.close();
    cout << "加密成功!" << endl;
    return 0;
}

解密算法:

#include <bits/stdc++.h>
using namespace std;
string decrypt(const string &input, const vector<int> &key) {
    string decrypted = input;
    int keySize = key.size();
    int inputSize = input.size();
    for (int i = 0; i < inputSize; ++i)
        decrypted[i] = char(int(input[i] - key[i % keySize] + 256) % 256);
    return decrypted;
}
int main() {
    int a[4] = {};
    cout << "密钥:";
    scanf("%1d%1d%1d%1d" ,&a[0] ,&a[1] ,&a[2] ,&a[3]);
    vector<int> decryptionKey = {a[0] ,a[1] ,a[2] ,a[3]};
    ifstream encryptedFile("encrypted_output.txt");
    ofstream decryptedFile("decrypted_output.txt");
    if (!encryptedFile.is_open() || !decryptedFile.is_open()) {
        cerr << "文件打开错误!";
        return 404;
    }
    string encryptedContent((istreambuf_iterator<char>(encryptedFile)),(istreambuf_iterator<char>()));
    string decryptedContent = decrypt(encryptedContent, decryptionKey);
    decryptedFile << decryptedContent;
    encryptedFile.close();
    decryptedFile.close();
    cout << "解密成功!" << endl;

    return 0;
}

食用说明:

  • 将需要加密的txt文件名改为input.txt,运行程序,密钥为4位,加密完成后会在生成另一个txt文件encrypted_output.txt为加密后的文件。

  • 将需要解密的txt文件名改为encrypted_output.txt,运行程序,密钥为4位(务必与加密的密钥相同!),加密完成后会在生成另一个txt文件decrypted_output.txt为解密后的文件。

  • 密钥可以包含:数字,字母,英文字符(如:1as23m!1432@等等)

  • 闲着没事不要往密钥里塞中文!!!!(虽然电脑不会死机)

5 个赞

:+1:

2 个赞