Libra Studio Log

開発に関することやゲーム、ガジェットなどについてつらつらと書き記しています

SwiftでMD5を使った簡単ハッシュ化

f:id:daihase:20190809100049p:plain

こんばんわ、daihaseです。 今日もSwiftネタを。Swift強化月間。

 

お題の通り、Swiftを使って文字列をハッシュ化してみましょう。

そもそもハッシュやMD5とは?という方はこちらを。

※Swiftでこちら処理を行うにはObjective-CCommonCryptoを利用する必要があるため、あらかじめBridging-Header.hを作成する必要があります。

 

それではソースを作成しましょう。

文字列をMD5でハッシュ化するので、Stringを拡張するファイルを作るのが良さそうですね。 ここではString+Ex.swiftというファイルを作成します。

import Foundation
import UIKit

extension String {
    public func md5() -> String {
        var md5String = ""
        let digestLength = Int(CC_MD5_DIGEST_LENGTH)
        let md5Buffer = UnsafeMutablePointer<UInt8>.allocate(capacity: digestLength)

        if let data = self.data(using: .utf8) {
            data.withUnsafeBytes({ (bytes: UnsafePointer<CChar>) -> Void in
                CC_MD5(bytes, CC_LONG(data.count), md5Buffer)
                md5String = (0..<digestLength).reduce("") { $0 + String(format:"%02x", md5Buffer[$1]) }
            })
        }

        return md5String
    }
}

 

それではViewControllerからこの用意した関数を呼び出してちゃんとハッシュ化されるか見て見ます。

import UIKit

class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()

        let text = "あいうえお"
        print(text.md5())
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
}

このような方法でSwiftでは簡単にMD5を使ったハッシュ化が行えます。他にもSHA256等色々用意されてるので試してみてください。

それでは良い開発ライフを〜。