7Rアプリ

プログラミングで詰まったことなど書いてます

Swift 文字列をハッシュ化する方法 xcode

文字列をハッシュ化する方法を教わったのでメモ。

 

"aaa"という文字列を送ったらハッシュ化された64文字が返ってくるメソッドを作る。

Swift

[ハッシュ化]

パスワードなどを隠すために使用できる

[手順]

①ヘッダーファイルを作る

②CC_SHA256を使用できる様に設定する。

ハッシュ値を受け取る場所を作る

 

①ヘッダーファイルを作る

[ファイル名]プロジェクト名-Bridging-Header.h

①ヘッダーファイルを作る 

[ファイル名]プロジェクト名-Bridging-Header.h

 

f:id:kobearen:20200213115731p:plain

 

[ファイルの中身]

#import <CommonCrypto/CommonHMAC.h>

#import <CommonCrypto/CommonHMAC.h>

 

②CC_SHA256を使用できる設定にする

 

project

→Build Setting

検索窓にbrid

Objective-C Bridging Header の右側にプロジェクト名-Bridging-Header.hを記入

 

Stringがもともと持っている関数(例:length)では無いので関数を自作する。

extension String {

    func sha256String() -> String {

        let cstr = self.cString(using: String.Encoding.utf8)

        let data = NSData(bytes: cstr!, length: self.count)

        guard let digest = NSMutableData(length: Int(CC_SHA256_DIGEST_LENGTH)) else { abort() }

        CC_SHA256(data.bytes, CC_LONG(data.length), digest.mutableBytes.assumingMemoryBound(to: UInt8.self))

 

 

        let output = NSMutableString(capacity: 64)

 

        for i in 0..<32 {

            output.appendFormat("%02x", digest[i])

        }

 

        return output as String

    }

}

 

 

 

 

ハッシュ値を受け取る場所を作る

    @IBAction func ButtonTapped(_ sender: CustomButton) {

 

 

 

        let result = "aaa".sha256String()

        navigationController?.pushViewController(controller, animated: true)

    }

 

結果

ハッシュ値結果

ハッシュ値結果