使用openssl/sha.h对文本文件进行SHA256散列可以通过以下步骤完成:
#include <openssl/sha.h>
FILE *file = fopen("filename.txt", "rb");
if (file == NULL) {
// 处理文件打开失败的情况
}
fseek(file, 0, SEEK_END);
long file_size = ftell(file);
rewind(file);
unsigned char *buffer = (unsigned char *)malloc(file_size);
if (buffer == NULL) {
// 处理内存分配失败的情况
}
fread(buffer, 1, file_size, file);
fclose(file);
unsigned char hash[SHA256_DIGEST_LENGTH];
SHA256(buffer, file_size, hash);
for (int i = 0; i < SHA256_DIGEST_LENGTH; i++) {
printf("%02x", hash[i]);
}
printf("\n");
完整的示例代码如下所示:
#include <stdio.h>
#include <stdlib.h>
#include <openssl/sha.h>
int main() {
FILE *file = fopen("filename.txt", "rb");
if (file == NULL) {
// 处理文件打开失败的情况
return 1;
}
fseek(file, 0, SEEK_END);
long file_size = ftell(file);
rewind(file);
unsigned char *buffer = (unsigned char *)malloc(file_size);
if (buffer == NULL) {
// 处理内存分配失败的情况
fclose(file);
return 1;
}
fread(buffer, 1, file_size, file);
fclose(file);
unsigned char hash[SHA256_DIGEST_LENGTH];
SHA256(buffer, file_size, hash);
for (int i = 0; i < SHA256_DIGEST_LENGTH; i++) {
printf("%02x", hash[i]);
}
printf("\n");
free(buffer);
return 0;
}
这是一个简单的示例,演示了如何使用openssl/sha.h对文本文件进行SHA256散列。在实际应用中,还需要考虑错误处理、内存管理、文件读取的效率等方面的问题。
领取专属 10元无门槛券
手把手带您无忧上云