web-dev-qa-db-fra.com

Récupère la chaîne md5 dans Swift 5

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?

11
Valentin Shamardin

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*/
0
Adobels