sha256sum命令源码
时间: 2023-10-23 12:11:51 浏览: 141
以下是 sha256sum 命令的源码(C 语言实现):
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <fcntl.h>
#include <unistd.h>
#include <openssl/sha.h>
#define BUF_SIZE 65536
int main(int argc, char *argv[])
{
int fd;
char buf[BUF_SIZE];
SHA256_CTX ctx;
unsigned char sha256[SHA256_DIGEST_LENGTH];
int i;
if (argc != 2) {
fprintf(stderr, "Usage: %s <file>\n", argv[0]);
exit(EXIT_FAILURE);
}
fd = open(argv[1], O_RDONLY);
if (fd == -1) {
fprintf(stderr, "Error opening file: %s\n", strerror(errno));
exit(EXIT_FAILURE);
}
SHA256_Init(&ctx);
ssize_t nread;
while ((nread = read(fd, buf, BUF_SIZE)) > 0) {
SHA256_Update(&ctx, buf, nread);
}
SHA256_Final(sha256, &ctx);
for (i = 0; i < SHA256_DIGEST_LENGTH; i++) {
printf("%02x", sha256[i]);
}
printf(" %s\n", argv[1]);
close(fd);
exit(EXIT_SUCCESS);
}
```
该程序的作用是计算指定文件的 SHA256 哈希值。它使用 OpenSSL 库提供的 SHA256 函数实现计算过程。程序读取文件的内容,将其传递给 SHA256 函数,最终输出计算得到的哈希值。
阅读全文