web-dev-qa-db-ja.com

Swift 5で文字列md5を取得します

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では、withUnsafeBytesUnsafeRawBufferPointerではなくUnsafePointerを使用します。md5関数を変更する方法は?

11

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