You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何升级替换Security框架中已废弃的SecDigestGetData方法

解决方案

SecDigestGetData属于旧版CSSM系列接口,自macOS 10.15、iOS 13起已被苹果从Security框架中移除,你可以使用苹果官方推荐的CommonCrypto框架的哈希计算接口替换原有逻辑,完全实现相同的证书摘要匹配功能。

第一步:导入必要头文件

在代码头部新增CommonCrypto头文件引入:

#include <CommonCrypto/CommonDigest.h>

第二步:替换原有代码段

原代码的核心作用是计算证书二进制数据的SHA1摘要,和已有的hashData做相等校验,替换后的代码如下:

uint8 candidate_sha1_hash[CC_SHA1_DIGEST_LENGTH];
// 直接调用CommonCrypto的SHA1接口计算证书数据的摘要
CC_SHA1(certData.Data, (CC_LONG)certData.Length, candidate_sha1_hash);
// 对比摘要长度和内容
if ((hashData.Length == CC_SHA1_DIGEST_LENGTH) &&
    (!memcmp(hashData.Data, candidate_sha1_hash, CC_SHA1_DIGEST_LENGTH))) {
    found = TRUE;
    break;
}

补充说明

  • 如果你后续需要切换为SHA256等其他哈希算法,只需要替换对应的接口即可:比如CC_SHA256、CC_SHA256_DIGEST_LENGTH
  • 编译时确保项目已经链接Security.framework,CommonCrypto为系统内置框架无需额外链接配置

内容的提问来源于stack exchange,提问作者Andrew

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 06:15:00