91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

c++文件加密解密怎么實現

c++
小億
161
2023-11-08 17:17:17
欄目: 編程語言

在C++中,可以使用一些加密算法來實現文件加密和解密。

一種常見的加密算法是AES (Advanced Encryption Standard)。以下是一個使用AES算法對文件進行加密和解密的示例代碼:

#include <iostream>
#include <fstream>
#include <string>
#include <openssl/aes.h>

const int AES_KEY_LENGTH = 128; // 使用128位的AES加密

std::string encryptFile(const std::string& inputFile, const std::string& outputFile, const std::string& key) {
    std::ifstream fin(inputFile, std::ios::binary);
    std::ofstream fout(outputFile, std::ios::binary);

    // 設置AES加密密鑰
    AES_KEY aesKey;
    AES_set_encrypt_key((const unsigned char*)key.c_str(), AES_KEY_LENGTH, &aesKey);

    // 加密文件
    unsigned char inBuffer[AES_BLOCK_SIZE];
    unsigned char outBuffer[AES_BLOCK_SIZE];

    while (fin.read((char*)inBuffer, AES_BLOCK_SIZE)) {
        AES_encrypt(inBuffer, outBuffer, &aesKey);
        fout.write((char*)outBuffer, AES_BLOCK_SIZE);
    }

    fin.close();
    fout.close();

    return outputFile;
}

std::string decryptFile(const std::string& inputFile, const std::string& outputFile, const std::string& key) {
    std::ifstream fin(inputFile, std::ios::binary);
    std::ofstream fout(outputFile, std::ios::binary);

    // 設置AES解密密鑰
    AES_KEY aesKey;
    AES_set_decrypt_key((const unsigned char*)key.c_str(), AES_KEY_LENGTH, &aesKey);

    // 解密文件
    unsigned char inBuffer[AES_BLOCK_SIZE];
    unsigned char outBuffer[AES_BLOCK_SIZE];

    while (fin.read((char*)inBuffer, AES_BLOCK_SIZE)) {
        AES_decrypt(inBuffer, outBuffer, &aesKey);
        fout.write((char*)outBuffer, AES_BLOCK_SIZE);
    }

    fin.close();
    fout.close();

    return outputFile;
}

int main() {
    std::string inputFile = "input.txt";
    std::string encryptedFile = "encrypted.txt";
    std::string decryptedFile = "decrypted.txt";
    std::string key = "mykey1234567890"; // 密鑰

    encryptFile(inputFile, encryptedFile, key);
    decryptFile(encryptedFile, decryptedFile, key);

    return 0;
}

上述代碼使用OpenSSL庫中的AES函數。encryptFile函數接收輸入文件路徑、輸出文件路徑和密鑰作為參數,將輸入文件內容加密后寫入輸出文件。decryptFile函數接收加密后的文件路徑、解密后的文件路徑和密鑰作為參數,將加密文件內容解密后寫入解密后的文件。

請注意,這只是一個簡單的示例代碼,僅用于演示AES加密和解密。在實際應用中,需要考慮更多的安全性問題,如密鑰的生成和存儲、加密模式的選擇等。

0
顺昌县| 临沭县| 淳安县| 长沙县| 上高县| 齐齐哈尔市| 中山市| 罗田县| 扬中市| 贡嘎县| 高淳县| 得荣县| 多伦县| 武胜县| 宜春市| 江安县| 同德县| 池州市| 合阳县| 奉贤区| 阳信县| 舟山市| 章丘市| 遵化市| 开江县| 铜鼓县| 靖江市| 湖北省| 嘉祥县| 临泉县| 沁阳市| 遂宁市| 宁陵县| 红安县| 炎陵县| 崇左市| 荔浦县| 昌平区| 宁陕县| 青州市| 三台县|