iOS

Swift - SHA256 简介

2021-06-23  本文已影响0人  墨林灵

引子

在编写个人项目的时候,需要给字符串加密。于是就编写了以前经常使用的MD5加密算法。但是该算法在 XCode 中显示在 iOS13 以后将被废弃,系统推荐使用 SHA256 算法。

下面是被警告的 MD5 算法。

var md5: String {

    let utf8 = cString(using: .utf8)

    var digest = [UInt8](repeating: 0, count: Int(CC_SHA256_DIGEST_LENGTH))

    CC_MD5(utf8, CC_LONG(utf8!.count - 1), &digest)

    return digest.reduce("") { $0 + String(format:"%02x", $1) }

}

为什么废弃MD5

通过 Xcode 的警告可以了解到,MD5 在加密方面已经遭到破坏,为了数据安全不应该再使用它,应该使用更加安全的 SHA256 算法。

什么是SHA256

SHA 是 Secure Hash Algorithm 的缩写,即安全哈希算法。

SHA 的计算流程:对数字数据进行数学运算 -> 将计算出的哈希值与已知预期的哈希值进行比较 -> 从而确定数据的完整性。

哈希值可以从任意数据段生成,但该过程不能逆向,即不能从哈希值逆向生成数据。

SHA256 也成为 SHA2,它是从SHA1进化而来,目前没有发现SHA256被破坏,但随着计算机计算能力越来越强大,它肯定会被破坏,所以SHA3已经在路上了。

如何实现

extension String {

    var sha256: String {

        let utf8 = cString(using: .utf8)

        var digest = [UInt8](repeating: 0, count: Int(CC_SHA256_DIGEST_LENGTH))

        CC_SHA256(utf8, CC_LONG(utf8!.count - 1), &digest)

        return digest.reduce("") { $0 + String(format:"%02x", $1) }

    }

}

参考

SHA256

上一篇下一篇

猜你喜欢

热点阅读