OC:
使用前需先#import<CommonCrypto/CommonDigest.h>
//path为文件路径
+(NSString *)getImageMD5:(NSString *)path{
NSFileHandle *handle = [NSFileHandle fileHandleForReadingAtPath:path];
if( handle== nil ) {
return nil;
}
CC_MD5_CTX md5;
CC_MD5_Init(&md5);
BOOL done = NO;
while(!done)
{
NSData* fileData = [handle readDataOfLength: 256 ];
CC_MD5_Update(&md5,[fileData bytes],[fileData length]);
if( [fileData length] == 0 ) done = YES;
}
unsigned char digest[CC_MD5_DIGEST_LENGTH];
CC_MD5_Final(digest,&md5);
NSString* s = [NSString stringWithFormat: @"%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x",
digest[0],digest[1],
digest[2],digest[3],
digest[4],digest[5],
digest[6],digest[7],
digest[8],digest[9],
digest[10],digest[11],
digest[12],digest[13],
digest[14],digest[15]];
return s;
}
swift:
使用方法,1,在header文件导入<CommonCrypto/CommonDigest.h>
3,调用var fielad :NSString = 字符串.md5()
//字符串MD5加密
extension String{
func md5() ->String!{
let str = self.cStringUsingEncoding(NSUTF8StringEncoding)
let strLen = CUnsignedInt(self.lengthOfBytesUsingEncoding(NSUTF8StringEncoding))
let digestLen = Int(CC_MD5_DIGEST_LENGTH)
let result = UnsafeMutablePointer<CUnsignedChar>.alloc(digestLen)
CC_MD5(str!,strLen,result)
var hash = NSMutableString()
for i in 0 ..< digestLen {
hash.appendFormat("%02x",result[i])
}
result.destroy()
return String(format: hash as String)
}
}