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

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

作者: 天码行空 | 来源:发表于2021-02-22 18:02 被阅读0次

    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)

        }

    }

    文章出处

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/jhykfltx.html