亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

C++ md5加密怎么處理大文件

c++
小樊
86
2024-07-18 14:13:49
欄目: 編程語言

對于大文件,要分塊讀取文件內容并依次更新MD5哈希值。下面是一個示例代碼,演示了如何使用C++對大文件進行MD5加密:

#include <iostream>
#include <fstream>
#include <sstream>
#include <openssl/md5.h>

std::string md5sum(std::ifstream& file) {
    MD5_CTX ctx;
    MD5_Init(&ctx);

    char buffer[1024];
    while (file.read(buffer, sizeof(buffer))) {
        MD5_Update(&ctx, buffer, file.gcount());
    }

    MD5_Final((unsigned char*)buffer, &ctx);

    std::stringstream ss;
    for (int i = 0; i < MD5_DIGEST_LENGTH; i++) {
        ss << std::hex << std::uppercase << (int)buffer[i];
    }

    return ss.str();
}

int main() {
    std::ifstream file("large_file.txt", std::ios::in | std::ios::binary);

    if (!file.is_open()) {
        std::cerr << "Error: cannot open file." << std::endl;
        return 1;
    }

    std::string result = md5sum(file);

    std::cout << "MD5 hash value of the file: " << result << std::endl;

    file.close();

    return 0;
}

在這個示例代碼中,md5sum函數接收一個ifstream對象和文件名作為參數,然后依次讀取文件的內容并更新MD5哈希值。最后返回MD5哈希值的十六進制表示。在main函數中,我們打開一個大文件large_file.txt并調用md5sum函數來計算其MD5哈希值。

請注意,在處理大文件時,為了避免內存溢出,最好分塊讀取文件內容并逐步更新MD5哈希值。

0
灵石县| 汕尾市| 大新县| 秭归县| 南城县| 平潭县| 讷河市| 鄂尔多斯市| 崇文区| 石屏县| 沁源县| 萨嘎县| 龙井市| 兰溪市| 茂名市| 札达县| 图片| 扎赉特旗| 孟州市| 万宁市| 稻城县| 金秀| 交口县| 林州市| 宜昌市| 栾川县| 南京市| 苏尼特左旗| 白城市| 大同市| 宾川县| 安义县| 汉阴县| 横峰县| 铜川市| 潼南县| 磴口县| 岑溪市| 清苑县| 拉萨市| 儋州市|