Swift 3 md5散列字符串(或同等值),仅内置安全模块



我正在寻找一种方法来生成md5哈希(或等效的32个字符)字符串,仅使用Xcode 8中的安全模块与Swift 3。换句话说,执行而不是的方法需要CommonCrypto。

我只发现一篇文章提到了这种方法。这篇文章声称这种方法只适用于OS X(不包括iOS)。

我知道md5不是超级安全的,但我需要与旧网站兼容,所以帮助将非常感激。

CommonCrypto有什么问题?它已经在所有设备上可用,简单,快速且经过良好测试:

extension Data {
    var hexString: String {
        return map { String(format: "%02hhx", $0) }.joined()
    }
    var md5: Data {
        var digest = [Byte](repeating: 0, count: Int(CC_MD5_DIGEST_LENGTH))
        self.withUnsafeBytes({
            _ = CC_MD5($0, CC_LONG(self.count), &digest)
        })
        return Data(bytes: digest)
    }
}

据我所知,计算md5的唯一其他可能性是自己添加算法,就像在CryptoSwift中使用的那样。

最新更新