Advertisement
Guest User

Untitled

a guest
Jan 3rd, 2015
211
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.77 KB | None | 0 0
  1. The C code:
  2. #include <stdio.h>
  3. #include <unistd.h>
  4. #include <sys/stat.h>
  5. #include <sys/types.h>
  6. #include <openssl/sha.h>
  7.  
  8. /* start SHA256 hash functions */
  9. int _genSHA256Hash(char *path, char outputBuffer[65])
  10. {
  11. struct stat sb;
  12. if (stat(path, &sb) == -1) {
  13. perror("stat");
  14. return 0;
  15. }
  16.  
  17. FILE *file = fopen(path, "rb");
  18. if(!file) return -1;
  19.  
  20. unsigned char hash[SHA256_DIGEST_LENGTH];
  21. SHA256_CTX sha256;
  22. SHA256_Init(&sha256);
  23. const int bufSize = 32768;
  24. char *buffer = malloc(bufSize);
  25. int bytesRead = 0;
  26. if(!buffer) return -1;
  27. while((bytesRead = fread(buffer, 1, bufSize, file)))
  28. {
  29. SHA256_Update(&sha256, buffer, bytesRead);
  30. printf("percent done: %d of %zu\n", bytesRead, sb.st_size);
  31. }
  32. SHA256_Final(hash, &sha256);
  33.  
  34. sha256_hash_string(hash, outputBuffer);
  35.  
  36. fclose(file);
  37. free(buffer);
  38.  
  39. return 0;
  40. }
  41.  
  42. void sha256_hash_string (unsigned char hash[SHA256_DIGEST_LENGTH], char outputBuffer[65]) {
  43. int i = 0;
  44.  
  45. for(i = 0; i < SHA256_DIGEST_LENGTH; i++)
  46. {
  47. sprintf(outputBuffer + (i * 2), "%02x", hash[i]);
  48. }
  49.  
  50. outputBuffer[64] = 0;
  51. }
  52.  
  53. int main() {
  54. char buffer[60];
  55. _genSHA256Hash("example-livedvd.iso", buffer);
  56. printf("%s\n", buffer);
  57. }
  58.  
  59.  
  60.  
  61. The output:
  62. percent done: 32768 of 1108344832
  63. percent done: 32768 of 1108344832
  64. percent done: 32768 of 1108344832
  65. percent done: 32768 of 1108344832
  66. percent done: 32768 of 1108344832
  67. percent done: 32768 of 1108344832
  68. percent done: 32768 of 1108344832
  69. percent done: 32768 of 1108344832
  70. percent done: 32768 of 1108344832
  71. percent done: 32768 of 1108344832
  72. percent done: 32768 of 1108344832
  73. percent done: 32768 of 1108344832
  74. percent done: 32768 of 1108344832
  75. percent done: 32768 of 1108344832
  76. percent done: 32768 of 1108344832
  77. percent done: 32768 of 1108344832
  78. percent done: 32768 of 1108344832
  79. percent done: 32768 of 1108344832
  80. percent done: 32768 of 1108344832
  81. percent done: 32768 of 1108344832
  82. percent done: 32768 of 1108344832
  83. percent done: 32768 of 1108344832
  84. percent done: 32768 of 1108344832
  85. percent done: 32768 of 1108344832
  86. percent done: 32768 of 1108344832
  87. percent done: 32768 of 1108344832
  88. percent done: 32768 of 1108344832
  89. percent done: 32768 of 1108344832
  90. percent done: 32768 of 1108344832
  91. percent done: 32768 of 1108344832
  92. percent done: 32768 of 1108344832
  93. percent done: 32768 of 1108344832
  94. percent done: 32768 of 1108344832
  95. percent done: 32768 of 1108344832
  96. percent done: 32768 of 1108344832
  97. percent done: 32768 of 1108344832
  98. percent done: 32768 of 1108344832
  99. percent done: 32768 of 1108344832
  100. percent done: 32768 of 1108344832
  101. percent done: 32768 of 1108344832
  102. percent done: 32768 of 1108344832
  103. percent done: 32768 of 1108344832
  104. percent done: 32768 of 1108344832
  105. percent done: 32768 of 1108344832
  106. percent done: 32768 of 1108344832
  107. percent done: 32768 of 1108344832
  108. percent done: 32768 of 1108344832
  109. percent done: 32768 of 1108344832
  110. percent done: 32768 of 1108344832
  111. percent done: 32768 of 1108344832
  112. percent done: 32768 of 1108344832
  113. percent done: 32768 of 1108344832
  114. percent done: 32768 of 1108344832
  115. percent done: 32768 of 1108344832
  116. percent done: 32768 of 1108344832
  117. percent done: 32768 of 1108344832
  118. percent done: 32768 of 1108344832
  119. percent done: 32768 of 1108344832
  120. percent done: 32768 of 1108344832
  121. percent done: 32768 of 1108344832
  122. percent done: 32768 of 1108344832
  123. percent done: 32768 of 1108344832
  124. percent done: 32768 of 1108344832
  125. percent done: 32768 of 1108344832
  126. percent done: 32768 of 1108344832
  127. percent done: 32768 of 1108344832
  128. ... truncated ...
  129. percent done: 32768 of 1108344832
  130. percent done: 32768 of 1108344832
  131. percent done: 32768 of 1108344832
  132. percent done: 32768 of 1108344832
  133. percent done: 32768 of 1108344832
  134. percent done: 32768 of 1108344832
  135. percent done: 32768 of 1108344832
  136. percent done: 32768 of 1108344832
  137. percent done: 32768 of 1108344832
  138. percent done: 32768 of 1108344832
  139. percent done: 32768 of 1108344832
  140. percent done: 32768 of 1108344832
  141. percent done: 32768 of 1108344832
  142. percent done: 32768 of 1108344832
  143. percent done: 32768 of 1108344832
  144. percent done: 32768 of 1108344832
  145. percent done: 32768 of 1108344832
  146. percent done: 32768 of 1108344832
  147. percent done: 32768 of 1108344832
  148. percent done: 32768 of 1108344832
  149. percent done: 32768 of 1108344832
  150. percent done: 32768 of 1108344832
  151. percent done: 32768 of 1108344832
  152. percent done: 32768 of 1108344832
  153. percent done: 32768 of 1108344832
  154. percent done: 32768 of 1108344832
  155. percent done: 32768 of 1108344832
  156. percent done: 32768 of 1108344832
  157. 2e926343f55903060bb453d0d1d21158d92a623c21ad5f820cfa8f97095888bf
  158. [root@localhost ~]#
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement