どういうことか
iOS13からCryptoKitを使って簡単にSHA-256形式でハッシュ化できるっぽいけどiOS12は対応していないのでなんとかして変換する。
なんとかする
CommonCryptoを使用する。
EncryptionUtil.swift
import CommonCrypto
class EncryptionUtil {
static func convertToSha256(string: String) -> String {
var result: [CUnsignedChar]
let digestLength = Int(CC_SHA256_DIGEST_LENGTH)
if let cdata = string.cString(using: String.Encoding.utf8) {
result = Array(repeating: 0, count: digestLength)
CC_SHA256(cdata, CC_LONG(cdata.count - 1), &result)
} else {
fatalError("SHA256の変換に失敗しました")
}
return (0..<digestLength).reduce("") {
$0 + String(format: "%02hhx", result[$1])
}
}
}
このクラスに文字列を投げて変換する。
// 呼び出して変換
print(EncryptionUtil.convertToSha256(string: "パスワード"))
// 変換後
// d8b076148c939d9d2d6eb60458969c486794a4c0fcf0632be58fa5bf6d15aafa
SHA256ハッシュ生成ツールなどを使って比べてみると同じものが出力されてるはず。
おわり(´・ω・`)
参考