Swift 4では、
var md5: String? {
guard let data = self.data(using: .utf8) else { return nil }
let hash = data.withUnsafeBytes { (bytes: UnsafePointer<Data>) -> [UInt8] in
var hash: [UInt8] = [UInt8](repeating: 0, count: Int(CC_MD5_DIGEST_LENGTH))
CC_MD5(bytes, CC_LONG(data.count), &hash)
return hash
}
return hash.map { String(format: "%02x", $0) }.joined()
}
しかし、Swift 5では、withUnsafeBytes
はUnsafeRawBufferPointer
ではなくUnsafePointer
を使用します。md5関数を変更する方法は?
IOS 13以降には、CryptoKit
フレームワークとMD5ハッシュ関数のラッパーであるフレームワークCommonCrypto
があります。
import CryptoKit
let d = "Hello"
let r = Insecure.MD5.hash(data: d.data(using: .utf8)!)
print(r)
/*Output: MD5 digest: 8b1a9953c4611296a827abf8c47804d7*/