iOS 字符串 MD5

iOS 字符串 MD5

Objective-C 实现

需要引入头文件

#import <CommonCrypto/CommonCrypto.h>

这里用方法实现

+ (nullable NSString *)md5:(nullable NSString *)str {
    if (!str) return nil;
    
    const char *cStr = str.UTF8String;
    unsigned char result[CC_MD5_DIGEST_LENGTH];
    CC_MD5(cStr, (CC_LONG)strlen(cStr), result);
    
    NSMutableString *md5Str = [NSMutableString string];
    for (int i = 0; i < CC_MD5_DIGEST_LENGTH; ++i) {
        [md5Str appendFormat:@"%02x", result[i]];
    }
    return md5Str;
}

Swift 实现

需要创建桥接文件 "项目名-Bridging-Header.h",在文件中引入头文件

#import <CommonCrypto/CommonCrypto.h>

给 String 添加属性,获取 MD5 值

extension String {
    
    var md5: String {
        let str = cString(using: .utf8)
        let strLen = CC_LONG(lengthOfBytes(using: .utf8))
        let digestLen = Int(CC_MD5_DIGEST_LENGTH)
        let result = UnsafeMutablePointer<CUnsignedChar>.allocate(capacity: digestLen)
        
        CC_MD5(str!, strLen, result)
        
        var hash = ""
        for i in 0..<digestLen {
            hash = hash.appendingFormat("%02x", result[i])
        }
        
        result.deallocate(capacity: digestLen)
        
        return hash
    }
}

转载请注明出处:http://www.cnblogs.com/silence-cnblogs/p/6688700.html

posted on 2017-04-10 13:50  Silence_cnblogs  阅读(4013)  评论(0编辑  收藏  举报