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:unichar 与 char

Objective-C Runtime 运行时之五:协议与分类(转载)

Objective-C Runtime 运行时之一:类与对象

在Unity中将Unity生成的代码与Objective-C混合使用?

Objective-C Block与函数指针比较

objective-c与C++的区别