“CC_MD5”已弃用:在iOS 13.0中首次弃用-此函数在加密方面被破坏,应该....

jtjikinw  于 2023-05-30  发布在  iOS
关注(0)|答案(2)|浏览(936)

CC_MD5在ios14中已被弃用,但我的项目至少支持ios14。我需要MD5。我该怎么办?我使用的开发语言是OC

rsaldnfx

rsaldnfx1#

MD5被弃用是因为它是一个有缺陷的、不安全的算法。如果可以,避免它。但如果因为旧数据或外部要求给出的算法而不得不使用MD5,则可以继续使用。
编译器生成警告。但是你仍然可以使用CC_MD5。而且我怀疑苹果是否会删除它,因为它在太多现有的应用程序中使用。
您可以选择性地在Objective-C中隐藏警告:

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"

- (void) hashData
{
    // your code using CC_MD5
}

#pragma clang diagnostic pop
mitkmikd

mitkmikd2#

接受的答案只适用于ObjC,因为Swift不支持#pragma
此外,整个CommonCrypto框架已经过时,并被CryptoKit框架取代。
以下是Swift中使用CryptoKit的解决方案:

import CryptoKit

let data:String = "the data to be hashed"
let messageData = string.data(using: .utf8)!
let digestData = Insecure.MD5.hash (data: messageData)
let digestHex = String(digestData.map { String(format: "%02hhx", $0) }.joined().prefix(32))

相关问题