Swift 文字列をハッシュ化する方法 xcode
文字列をハッシュ化する方法を教わったのでメモ。
"aaa"という文字列を送ったらハッシュ化された64文字が返ってくるメソッドを作る。
Swift
[ハッシュ化]
パスワードなどを隠すために使用できる
[手順]
①ヘッダーファイルを作る
②CC_SHA256を使用できる様に設定する。
③ハッシュ値を受け取る場所を作る
①ヘッダーファイルを作る
[ファイル名]プロジェクト名-Bridging-Header.h
①ヘッダーファイルを作る
[ファイル名]プロジェクト名-Bridging-Header.h
[ファイルの中身]
#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)
}