Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- The C code:
- #include <stdio.h>
- #include <unistd.h>
- #include <sys/stat.h>
- #include <sys/types.h>
- #include <openssl/sha.h>
- /* start SHA256 hash functions */
- int _genSHA256Hash(char *path, char outputBuffer[65])
- {
- struct stat sb;
- if (stat(path, &sb) == -1) {
- perror("stat");
- return 0;
- }
- FILE *file = fopen(path, "rb");
- if(!file) return -1;
- unsigned char hash[SHA256_DIGEST_LENGTH];
- SHA256_CTX sha256;
- SHA256_Init(&sha256);
- const int bufSize = 32768;
- char *buffer = malloc(bufSize);
- int bytesRead = 0;
- if(!buffer) return -1;
- while((bytesRead = fread(buffer, 1, bufSize, file)))
- {
- SHA256_Update(&sha256, buffer, bytesRead);
- printf("percent done: %d of %zu\n", bytesRead, sb.st_size);
- }
- SHA256_Final(hash, &sha256);
- sha256_hash_string(hash, outputBuffer);
- fclose(file);
- free(buffer);
- return 0;
- }
- void sha256_hash_string (unsigned char hash[SHA256_DIGEST_LENGTH], char outputBuffer[65]) {
- int i = 0;
- for(i = 0; i < SHA256_DIGEST_LENGTH; i++)
- {
- sprintf(outputBuffer + (i * 2), "%02x", hash[i]);
- }
- outputBuffer[64] = 0;
- }
- int main() {
- char buffer[60];
- _genSHA256Hash("example-livedvd.iso", buffer);
- printf("%s\n", buffer);
- }
- The output:
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- ... truncated ...
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- percent done: 32768 of 1108344832
- 2e926343f55903060bb453d0d1d21158d92a623c21ad5f820cfa8f97095888bf
- [root@localhost ~]#
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement