CryptoKit 可以与 Objective-C 一起使用吗
Posted
技术标签:
【中文标题】CryptoKit 可以与 Objective-C 一起使用吗【英文标题】:Can CryptoKit be used with Objective-C 【发布时间】:2021-01-12 15:14:26 【问题描述】:您好,我有一个 Objective-C 项目,我想开始使用 Apple 的 CryptoKit 框架。这可能吗?
【问题讨论】:
CryptoKit 仅适用于 Swift。你能做的最好的事情就是编写 Objective-C 包装器来执行你需要的特定 CryptoKit 功能。 我最近在一个仅限 Objective-C 的项目中使用它,没问题。我只需要一些CommonCrypto
函数,在添加CryptoKit
作为框架并导入<CommonCrypto/CommonCrypto.h>
作为标题之后可以使用它没有问题。我认为这取决于 - 您对使用什么特别感兴趣?
【参考方案1】:
#include<CommonCrypto/CommonCrypto.h>
在纯 C 中为我工作,并且由于 Objective C 是一个严格的超集,它应该可以工作。
我找不到任何直接的文档,但是头文件本身指定了参数。
这不是 CryptoKit,但除非你有一个边缘案例,否则它会工作并且是 Apple 提供的,而不是 openssl 或 libressl。既然 OP 提到了它,我认为这是将 commoncrypto 作为替代方案的原因。在大多数情况下,算法的实际实现没有任何显着差异。
【讨论】:
可以,但它与 CryptoKit 不同。CommonCrypto.h
不是 CryptoKit
。它们是完全不同的框架和 API。
查看上面的答案,@skaak 报告使用这些标头并将 CryptoKit 添加为框架。我知道它们是不同的,但它们并没有那么不同,而且调用可能相同。
为了说明调用可能相同,您需要能够在一定程度上将这些框架用作彼此的替代品,但情况并非如此。更高级别的 CryptoKit 具有更简单的 API,并且比 CommonCrypto 支持更少的加密算法。有趣的是,CryptoKit 支持的许多算法不在 CommonCrypto 中(例如 ChaChaPoly 和 AES-GCM,尽管据说 AES-GCM 是 CommonCrypto 中的私有 API)。以上是关于CryptoKit 可以与 Objective-C 一起使用吗的主要内容,如果未能解决你的问题,请参考以下文章
Objective-C Runtime 运行时之五:协议与分类(转载)
Objective-C Runtime 运行时之一:类与对象