CryptKitによるハッシュ化

はじめに

iOS13で新しくApple CryptKitが公開されました。今までチェックサムを行う際などはCommonCryptを使ってハッシュ化を行なっていましたが、CryptKitを使うことでポインタへのアクセスがなくなり安全に処理を行うことが可能になりました。

現在2019/06/11時点ではまだBata版のためiOS13の正式リリースまでに変更になる可能性があルので注意です。

ハッシュ化

CommonCryptとCryptKitでsha256へハッシュ化を行うコードを作りました。

CommonCrypt

let length = Int(CC_SHA256_DIGEST_LENGTH)
var digest = [UInt8](repeating: 0, count: length)
_ = withUnsafeBytes { CC_SHA256($0, CC_LONG(self.count), &digest) }
digest.map { String(format: "%02x", $0) }.joined(separator: "")

CryptKit

let digest = SHA256.hash(data: data)

CryptKitを使うと1行でハッシュ化が行えるようになりました。便利!!