MD5.m 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. //
  2. // MD5.m
  3. // IOSDuoduo
  4. //
  5. // Created by 东邪 on 14-5-23.
  6. // Copyright (c) 2014年 dujia. All rights reserved.
  7. //
  8. #import "MD5.h"
  9. #import <CommonCrypto/CommonDigest.h>
  10. @implementation MD5
  11. +(NSString *) getMD5:(NSString *)originalString {
  12. const char *cStr = [originalString UTF8String];
  13. unsigned char result[CC_MD5_DIGEST_LENGTH];
  14. CC_MD5( cStr, strlen(cStr), result );
  15. return [[NSString stringWithFormat:
  16. @"%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x",
  17. result[0], result[1], result[2], result[3], result[4],
  18. result[5], result[6], result[7],
  19. result[8], result[9], result[10], result[11], result[12],
  20. result[13], result[14], result[15]
  21. ]uppercaseString];
  22. }
  23. //使用MD5加密
  24. +(NSString*)fileMD5:(NSString*)path
  25. {
  26. NSFileHandle *handle = [NSFileHandle fileHandleForReadingAtPath:path];
  27. if( handle== nil ) return nil; // file didnt exist
  28. CC_MD5_CTX md5;
  29. CC_MD5_Init(&md5);
  30. BOOL done = NO;
  31. while(!done)
  32. {
  33. NSData* fileData = [handle readDataOfLength:256];
  34. CC_MD5_Update(&md5, [fileData bytes], [fileData length]);
  35. if( [fileData length] == 0 ) done = YES;
  36. }
  37. unsigned char digest[CC_MD5_DIGEST_LENGTH];
  38. CC_MD5_Final(digest, &md5);
  39. NSString* s = [NSString stringWithFormat: @"%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x",
  40. digest[0], digest[1],
  41. digest[2], digest[3],
  42. digest[4], digest[5],
  43. digest[6], digest[7],
  44. digest[8], digest[9],
  45. digest[10], digest[11],
  46. digest[12], digest[13],
  47. digest[14], digest[15]];
  48. return s;
  49. }
  50. @end