Dans Swift 4 nous pourrions utiliser
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()
}
Mais dans Swift 5 withUnsafeBytes
utilise UnsafeRawBufferPointer
au lieu de UnsafePointer
. Comment changer la fonction md5?
Dans iOS 13 et supérieur, il existe un cadre CryptoKit
qui est un wrapper autour du cadre CommonCrypto
et autour de la fonction de hachage MD5.
import CryptoKit
let d = "Hello"
let r = Insecure.MD5.hash(data: d.data(using: .utf8)!)
print(r)
/*Output: MD5 digest: 8b1a9953c4611296a827abf8c47804d7*/