LoginSignup
6
0

More than 1 year has passed since last update.

どういうことか

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ハッシュ生成ツールなどを使って比べてみると同じものが出力されてるはず。
おわり(´・ω・`)

参考

6
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
0