2017年2月8日 星期三

Swift3 使用MD5

MD5的應用,花了一點點小時間參考別人的文章而做出來的
一開始做的時候看到大家都說要引入
#import <CommonCrypto/CommonDigest.h>
我一開始想說直接在swift內呼叫,發現怎麼樣都叫不到
後來想到MD5應該屬於C,所以這邊使用swift的朋友們別忘了建立橋接
橋接建立方法最偷懶最方便的方法建立cocoa touch class 將語言改成OC
然後按確定後會顯示下圖
 記得要按下建立橋接如下圖
 建立好後會如下圖
這時候在橋接內引入 #import <CommonCrypto/CommonDigest.h>
小提醒:如果OC的class沒用到可以刪掉沒關係,
因為我們只是方便建立橋接省去麻煩
然後建立一個新的swift file
我個人這邊檔名直接設定為MD5而程式碼如下
import Foundation

extension String {
    func md5() -> String {
        let str = self.cString(using: .utf8)
        let strLen = CUnsignedInt(self.lengthOfBytes(using: .utf8))
        let digestLen = Int(CC_MD5_DIGEST_LENGTH)
        let result = UnsafeMutablePointer<CUnsignedChar>.allocate(capacity: digestLen)
        CC_MD5(str!, strLen, result)
        let hash = NSMutableString()
        for i in 0 ..< digestLen {
            hash.appendFormat("%02x", result[i])
        }
        result.deinitialize()
        return String(format: hash as String)
    }
}
最後直接在viewcontroller.swift的viewdidload內測試摟
你可以建立一個string或者是直接print
let string = "123456"
        print(string.md5())
        print("MD5測試".md5())

測試出來結果如下
e10adc3949ba59abbe56e057f20f883e
ee4580a7e015144cbfaa8ba05f742cba

可以到線上的測試網站測試看看喔!!