3

I need to build an iOS application in which PGP keys will be created in order to encrypt and decrypt certain messages.

Since I'm new to PGP encryption in iOS is there some library that will allow me to create, keep and access the PGP keys as well as do the encryption and decryption using the keys.

I've implemented a backend and Android version using RSA algorithm with bouncy castle and OpenPGP in JAVA, however I will need to do the same with the iOS version. That means that the keys created in iOS should be in the same format and compatible with the ones created in the Android version.

4

4 回答 4

3

看看这个项目:UNNetPGPObjectivePGP,这可能会为你完成这项工作。

于 2013-12-12T22:47:14.087 回答
1

OpenPGP 密钥具有 RFC 4880 中定义的标准格式(两种格式 - 二进制和 base64 编码)。据我所知,BouncyCastle 可以创建一些自定义非标准格式的键。

一种选择是在 iOS 上使用我们的 SecureBlackbox(C++ 版本)——它提供了完整的 OpenPGP 功能,包括密钥生成和管理。

于 2013-11-18T08:40:36.997 回答
1

如果您真的需要 Bouncy Castle 原样,请考虑使用 j2objc

我们最近遇到了同样的情况,到目前为止,我们很幸运地使用j2objc将 Bouncy Castle 和使用它的代码转换为 Objective C。我们需要应用程序的 iOS 和 Android 版本之间的强大兼容性,并且不想冒着发现与我们的解决方案不兼容的风险。

为了转换 Bouncy Castle,我们必须删除一些与 LDAP 相关的类(无论如何我们都不需要),但除此之外它非常简单。我们通过反复试验来做到这一点,查看它无法转换的内容,然后删除文件并重试。

使用 j2objc 还具有让我们移植大量业务逻辑并避免在 Swift/Objective-C 中重新实现它的优势。我们刚刚在 Swift 中为我们需要直接使用的类创建了一些简单的包装器,并在整个应用程序中使用它们。

重要注意事项

值得注意的是,这并不是适合所有人的解决方案,正如这篇评论中提到的那样,以这种方式使用 Bouncy Castle 可能会产生一些后果,因此请确保您知道自己在做什么。在理解潜在的 Java 类路径问题和弄清楚如何引入和转换所需的一切(最好使用 shell 脚本或类似的东西来自动化更新时的过程)之间,这也是需要时间和专业知识的设置.

因此,除非您使用许多 Bouncy Castle 功能,否则这可能会带来额外的复杂性,使其不值得,尤其是美国出口合规部分。

于 2019-03-18T18:31:29.793 回答
0

我只是粗略地搜索了一下(我想你可能也做过),我找到了“GPGTools”项目,它基本上是一个开源 OpenPGP 实现。

而且由于它是从 OpenPGP 派生的,因此您创建的密钥应该与在 Android 端创建的密钥兼容。他们在这里有一个OLD(大约 2011 年)项目页面,但当前代码(处于不断变化的状态)可以在 GitHub 上找到

于 2013-11-17T21:41:47.393 回答