"CC_MD5"已弃用:iOS 13.0 中首次弃用 - 此函数已加密破坏,应该。。。。

  • 本文关键字:函数 应该 加密 MD5 CC iOS ios
  • 更新时间 :
  • 英文 :


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

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

接受的答案只适用于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))

最新更新