【发布时间】:2015-10-04 15:45:34
【问题描述】:
我有一个应用必须发送登录凭据,该凭据首先由 MD5 加密,然后由 3DES 加密。
我已经设法使用 CryptoSwift 通过 MD5 加密字符串。 但是我在 Swift 上找不到任何可以通过 3DES 加密的内容。
我已经尝试过 CommonCrypto。据我所知,这是在 C 中,但可以通过桥接头导入到 Objective C 中。
我发现一些文章和教程告诉我如何将 CommonCrypto 导入 Swift,无论是通过桥接头(带有警告它不适用于框架)还是通过 Model.map。但是,两者都不起作用。我不确定这是否是最新版本的 iOS 或 Xcode 的限制。
有人可以提出替代方案吗?
谢谢
已编辑
您好,请查看我已采取的以下步骤
- 好的,所以我创建了一个名为 newEncrypt 的新项目。
- 我选择不使用 header 选项,因为说明说这仅限于非框架应用程序/
- 我在 newEncrypt 中创建了一个名为 CommonCrypto 的文件夹,其中包含一个 module.map 文件。其中的内容是:module CommonCrypto [system] { 标头“/usr/include/CommonCrypto/CommonCrypto.h” 出口 * }
- 将 ${SRCROOT}/CommonCrypto 添加到 swift 编译器搜索路径导入路径。调试和发布。
- 这是指令停止的地方。我假设我需要将 CommonCrypto 导入我的班级。此错误与“无法构建目标 C 模块‘CommonCrypto’。 我还假设我应该在“/usr/include/CommonCrypto/CommonCrypto.h”或“/newEncrypt/CommonCrypto/CommonCrypto.h”中有 CommonCrypto 库文件(来自 CommonCryto ‘include’ 文件夹)? 我已经尝试过了,但我得到了同样的错误。
- 然后我尝试使用#import 添加一个头文件,并将-lfoo 添加到其他链接器标志调试和释放(尽管这可能不是正确的)ust,以防仍然需要。但我仍然得到相同的无法构建目标 c 错误。 我确定我做错了什么很明显
【问题讨论】:
-
当然可以将 CommonCrypto 导入 Swift,尽管它很乏味。正如您所注意到的,您已经找到了几个解释该过程的站点。如果不知道您尝试过什么以及遇到过什么问题,就不可能知道替代方案是什么。 “都不工作”并不能告诉我们您的问题是什么。
-
MD5 是哈希而不是加密,可以使用查找表轻松反转 (md5.gromweb.com)
-
感谢您这么快回复。我关注了spin.atomicobject.com/2015/02/23/c-libraries-swift 一个。我试图添加一个带有模块 CommonCrypto [system] { header "/usr/include/CommonCrypto/CommonCrypto.h" export * } 的 Model.map 文件作为项目中 CommonCrypto 文件夹中的内容。我已将 CommonCrypto 库添加到同一位置以及我的用户文件夹中的包含文件夹。我还将位置添加到 swift 编译器导入路径
-
@ThundercatChris 您链接的文章看起来不错。是的,这应该有效。您应该更新您的问题,以准确解释您所做的事情以及遇到的问题(什么错误?什么症状?您收到警告吗?您的计算机是否着火了?)您应该从一个空项目开始,然后在实际项目中尝试之前先练习让 CommonCrypto 链接。
-
@RobNapier 我已经编辑了我的原始问题,以包括我在一个新项目中采取的步骤
标签: swift encryption md5 3des commoncrypto