加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-14 07:08:57 所属栏目:百科 来源:网络整理
导读:OC: 使用前需先 #import CommonCrypto/CommonDigest.h //path为文件路径 +( NSString *)getImageMD5:( NSString *)path{ NSFileHandle *handle = [ NSFileHandle fileHandleForReadingAtPath :path]; if ( handle== nil ) { return nil ; } CC_MD5_CTX 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)

}

}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读