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

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++解壓與文件校驗和

發布時間:2024-10-30 13:48:45 來源:億速云 閱讀:80 作者:小樊 欄目:編程語言

在C++中,我們可以使用標準庫中的<fstream>來處理文件的讀取和寫入,以及<iostream>來進行輸出

#include <iostream>
#include <fstream>
#include <vector>
#include <string>
#include <openssl/sha.h>

std::string calculate_sha256(const std::string &file_path) {
    std::ifstream file(file_path, std::ios::binary);
    if (!file) {
        std::cerr << "Error opening file: " << file_path << std::endl;
        return "";
    }

    SHA256_CTX sha256;
    SHA256_Init(&sha256);

    const int buffer_size = 1024;
    std::vector<char> buffer(buffer_size);
    while (file.read(buffer.data(), buffer_size)) {
        SHA256_Update(&sha256, buffer.data(), file.gcount());
    }

    unsigned char hash[SHA256_DIGEST_LENGTH];
    SHA256_Final(hash, &sha256);

    std::stringstream ss;
    for (int i = 0; i < SHA256_DIGEST_LENGTH; ++i) {
        ss << std::hex << std::setw(2) << std::setfill('0') << static_cast<int>(hash[i]);
    }

    return ss.str();
}

bool verify_file(const std::string &file_path, const std::string &expected_hash) {
    std::string actual_hash = calculate_sha256(file_path);
    if (actual_hash.empty()) {
        return false;
    }

    return actual_hash == expected_hash;
}

int main() {
    std::string file_path = "example.txt";
    std::string expected_hash = "1a2b3c4d5e6f7g8h9i0j1k2l3m4n5o6p7q8r9s0t1u2v3w4x5y6z7a8b9c0d1e2f"; // Replace with the expected SHA256 hash of the file

    if (verify_file(file_path, expected_hash)) {
        std::cout << "File is valid." << std::endl;
    } else {
        std::cout << "File is invalid." << std::endl;
    }

    return 0;
}

這個示例中,我們首先使用OpenSSL庫中的SHA256_CTX結構來計算文件的SHA-256哈希值。calculate_sha256函數接受一個文件路徑作為參數,打開文件并讀取其內容,然后使用SHA-256算法計算哈希值。最后,我們將哈希值轉換為十六進制字符串并返回。

verify_file函數接受一個文件路徑和一個預期的哈希值作為參數。它首先調用calculate_sha256函數來計算文件的哈希值,然后將其與預期的哈希值進行比較。如果它們相等,則返回true,表示文件有效;否則返回false,表示文件無效。

main函數中,我們指定要驗證的文件路徑和預期的哈希值,然后調用verify_file函數來檢查文件是否有效。根據驗證結果,我們輸出相應的消息。

請注意,為了使這個示例正常工作,您需要安裝OpenSSL庫并在編譯時鏈接它。例如,使用g++編譯器時,您可以使用以下命令:

g++ -o file_verification file_verification.cpp -lssl -lcrypto
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

c++
AI

霍州市| 鲁甸县| 大名县| 平乡县| 庐江县| 三穗县| 大方县| 巩义市| 石家庄市| 泾源县| 彭泽县| 安吉县| 易门县| 兰西县| 巴楚县| 德安县| 平利县| 克什克腾旗| 嘉峪关市| 东乡县| 博白县| 鸡泽县| 永嘉县| 菏泽市| 来凤县| 恩施市| 烟台市| 抚州市| 阿拉善左旗| 嘉禾县| 阳信县| 瑞昌市| 木里| 登封市| 托克托县| 祁连县| 韶关市| 二连浩特市| 锦州市| 息烽县| 高碑店市|