Guest User

Untitled

a guest
Jan 17th, 2019
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.89 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #if defined(__APPLE__)
  5. # define COMMON_DIGEST_FOR_OPENSSL
  6. # include <CommonCrypto/CommonDigest.h>
  7. # define SHA1 CC_SHA1
  8. #else
  9. # include <openssl/md5.h>
  10. #endif
  11.  
  12. char *str2md5(const char *str, int length) {
  13. int n;
  14. MD5_CTX c;
  15. unsigned char digest[16];
  16. char *out = (char*)malloc(33);
  17.  
  18. MD5_Init(&c);
  19.  
  20. while (length > 0) {
  21. if (length > 512) {
  22. MD5_Update(&c, str, 512);
  23. } else {
  24. MD5_Update(&c, str, length);
  25. }
  26. length -= 512;
  27. str += 512;
  28. }
  29.  
  30. MD5_Final(digest, &c);
  31.  
  32. for (n = 0; n < 16; ++n) {
  33. snprintf(&(out[n*2]), 16*2, "%02x", (unsigned int)digest[n]);
  34. }
  35.  
  36. return out;
  37. }
  38.  
  39. int main(int argc, char **argv) {
  40. char *output = str2md5("hello", strlen("hello"));
  41. printf("%sn", output);
  42. free(output);
  43. return 0;
  44. }
Add Comment
Please, Sign In to add comment