怎么使用Linux的cpp11标准库来验证文件完整性
时间: 2023-05-21 11:00:48 浏览: 59
您可以使用Linux的cpp11标准库中的SHA256算法来验证文件的完整性。您可以使用以下代码:
```cpp
#include <iostream>
#include <fstream>
#include <sstream>
#include <iomanip>
#include <openssl/sha.h>
std::string sha256(std::string filename) {
std::ifstream file(filename, std::ios::binary);
if (!file) {
return "";
}
SHA256_CTX sha256;
SHA256_Init(&sha256);
const int bufSize = 32768;
char buffer[bufSize];
while (file.good()) {
file.read(buffer, bufSize);
SHA256_Update(&sha256, buffer, file.gcount());
}
unsigned char hash[SHA256_DIGEST_LENGTH];
SHA256_Final(hash, &sha256);
std::stringstream ss;
ss << std::hex << std::setfill('0');
for (int i = 0; i < SHA256_DIGEST_LENGTH; i++) {
ss << std::setw(2) << (int)hash[i];
}
return ss.str();
}
int main() {
std::string filename = "example.txt";
std::string hash = sha256(filename);
std::cout << "SHA256 hash of " << filename << ": " << hash << std::endl;
return 0;
}
```
这段代码将读取文件的内容并计算SHA256哈希值,然后将其转换为十六进制字符串。您可以将此哈希值与预期的哈希值进行比较,以验证文件的完整性。