LoginSignup
36
33

More than 5 years have passed since last update.

Swift で SHA256 の値を取得する

Last updated at Posted at 2014-11-11

SHA256とは

任意長の原文から固定長の特徴的な値である「ハッシュ値」を求める計算手順(アルゴリズム)の一つ。
最長で2の64乗ビットまでの原文から、256ビットのハッシュ値を算出することができる。

参考: http://e-words.jp/w/SHA-256.html

Swift で SHA256 の値を求める

String の extension として実装してみました。

extension String {
    func sha256String() -> String {
        let cstr = self.cStringUsingEncoding(NSUTF8StringEncoding)
        let data = NSData(bytes: cstr!, length: countElements(self))

        var digest = [UInt8](count: Int(CC_SHA256_DIGEST_LENGTH), repeatedValue: 0)

        CC_SHA256(data.bytes, CC_LONG(data.length), &digest)

        var output = NSMutableString(capacity: 64)
        for var i=0; i<32; i++ {
            output.appendFormat("%02x", digest[i])
        }

        return output as String
    }
}

使い方

下記のように利用します。

let tokenedString = "password".sha256String()

使い道

ハッシュ値の活用例としては、例えばパスワードの保存がある。
ハッシュ値を使えば、生のテキスト・パスワードを保存しなくて済むので安全性が高まる
(万が一、ハッシュ値が漏れても、それから実際のパスワードは取得できない)。

また、例えば2者間で送受信したデータが不正ではないかをチェックしたいときにも使える。
この場合、送信者と受信者におけるデータのハッシュ値を比較するだけで、
そのデータが壊れていないかどうかを確認できる(いわゆるチェックサム)。

参考: http://www.atmarkit.co.jp/fdotnet/dotnettips/964computehash/computehash.html

間違いがありましたらご指摘いただけると助かります。

36
33
3

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
36
33