微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

OC获取文件MD5值与swift字符串MD5加密方法

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>

2,在任意swift类中添加下边的方法

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)

}

}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐