C语言实现SHA1计算 - 轻量级替代Crypto++文件操作
以下是用C语言实现计算SHA1值的函数,可以作为Crypto++库中使用FileSource导致体积过大的轻量级替代方案:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdint.h>
#include <openssl/sha.h>
// 计算SHA1值的函数
void sha1(const char* input, size_t input_len, uint8_t* output) {
SHA_CTX ctx;
SHA1_Init(&ctx);
SHA1_Update(&ctx, input, input_len);
SHA1_Final(output, &ctx);
}
int main() {
const char* input = 'Hello, World!';
size_t input_len = strlen(input);
uint8_t output[SHA_DIGEST_LENGTH];
sha1(input, input_len, output);
printf('SHA1: ');
for (int i = 0; i < SHA_DIGEST_LENGTH; i++) {
printf('%02x', output[i]);
}
printf('
');
return 0;
}
这个函数使用了OpenSSL库的SHA1函数来计算SHA1值。传入的参数为输入数据的指针、输入数据的长度和一个用于存储SHA1值的输出缓冲区。函数内部通过调用SHA1_Init、SHA1_Update和SHA1_Final函数来完成SHA1计算,并将结果保存在输出缓冲区中。
在main函数中,我们将输入字符串设置为'Hello, World!',然后调用sha1函数计算SHA1值,并将结果打印出来。
请注意,此代码需要链接OpenSSL库。在编译时,请确保将-lssl -lcrypto选项传递给编译器。
原文地址: http://www.cveoy.top/t/topic/bO4P 著作权归作者所有。请勿转载和采集!