研发过程中不可或缺的MD5方式
一、OC版本MD5
#import "CommonCrypto/CommonDigest.h"
+(NSString *) md5: (NSString *) inPutText {
if (!inPutText) {
return nil;
}
const char *cStr = [inPutText UTF8String];
unsigned char result[CC_MD5_DIGEST_LENGTH];
CC_MD5(cStr, (CC_LONG)strlen(cStr), result);
return [[NSString stringWithFormat:@"%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X",
result[0], result[1], result[2], result[3],
result[4], result[5], result[6], result[7],
result[8], result[9], result[10], result[11],
result[12], result[13], result[14], result[15]
] lowercaseString];
}
二、Swift版本MD5
import CommonCrypto
extension String {
public var ex_md5: String {
guard let data = data(using: .utf8) else { return self }
var digest = [UInt8](repeating: 0, count: Int(CC_MD5_DIGEST_LENGTH))
#if swift(>=5.0)
_ = data.withUnsafeBytes { (bytes: UnsafeRawBufferPointer) in
return CC_MD5(bytes.baseAddress, CC_LONG(data.count), &digest)
}
#else
_ = data.withUnsafeBytes { bytes in
return CC_MD5(bytes, CC_LONG(data.count), &digest)
}
#endif
return digest.map { String(format: "%02x", $0) }.joined()
}
}