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

如何解密经core_ml_api加密的CoreML模型

Core ML加密模型解密操作步骤

苹果官方提供的Core ML加密机制是应用层绑定加密,解密操作只能在获得对应加密密钥、且满足加密时设定的权限条件下完成,无密钥无法暴力破解。

前置准备

  • 持有加密模型时生成的AES对称密钥(加密时通过MLModelEncryptionKey接口生成)
  • 确认执行解密的设备满足加密时设置的可解密权限条件,常见权限包括设备处于已解锁状态、运行的应用为对应签名的开发者应用、完成Touch ID/Face ID验证等,具体权限在生成encryptionInfo文件夹时配置

具体操作步骤

方式一:运行时自动解密(官方推荐流程)

  • 把包含encryptionInfo文件夹的加密.mlmodelc模型包导入Xcode项目
  • 在需要加载模型的代码位置,调用MLModel加载接口,传入密钥加载配置:
// Swift 示例代码
let config = MLModelConfiguration()
// 传入和加密时完全一致的密钥,替换为实际的模型名称
config.setModelEncryptionKey(yourEncryptionKey, forModelNamed: "your_model_name")
do {
    let model = try MLModel(contentsOf: modelURL, configuration: config)
    // 模型加载完成即自动完成解密,可直接执行推理
    // 如需导出解密后的模型可执行如下代码
    try model.write(to: saveURL)
} catch {
    print("模型加载/解密失败:\(error)")
}
  • 导出的解密模型将不再包含encryptionInfo文件夹,可直接无密钥加载使用。

方式二:离线手动解密

如果需要单独提取解密后的模型文件,可按照如下逻辑操作:

  • 读取encryptionInfo文件夹下的manifest.plist文件,获取每个加密的模型分片文件的加密参数,包括分片偏移量、加密块大小、IV值等
  • 使用加密时对应的AES密钥,按manifest里的参数逐块解密每个模型分片文件
  • 把解密后的分片按顺序拼接,得到完整的未加密.mlmodelc模型文件,删除原有的encryptionInfo文件夹即可正常加载。

注意事项

如果你没有对应的加密密钥,无法完成Core ML官方加密模型的解密,该加密机制没有公开的通用破解方案。
加密时如果设置了生物验证、设备绑定等强权限条件,即使持有密钥也需要满足对应条件才能完成解密。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 03:24:04