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文件導(dǎo)入<CommonCrypto/CommonDigest.h>?
?2酣栈,在任意swift類中添加下邊的方法。
? ? ? ? 3,調(diào)用?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)
? ? }
}