1

Objective-C中没有直接的 bCrypt ( http://codahale.com/how-to-safely-store-a-password/ ) 实现,虽然有 C 代码可以做到这一点,但它专门用于 x86 处理器,依赖于 BSD 库。

我正在构建一个 iOS 应用程序,它与相应的在线(.NET 和 HTML5+Javascript)应用程序共享相同的密码哈希。

我还不是应该去的地方,在那里我可以阅读非常简单的 Java 代码(http://www.mindrot.org/projects/jBCrypt/)并将其转换为适合 iOS 开发的 Objective-C 代码。

但是,有一个 Ruby 实现(https://github.com/codahale/bcrypt-ruby),我听说您可以使用 Ruby 构建 iOS 应用程序。然后我可以将 Ruby 代码滚动到静态库中,并将其链接到我的 iOS 项目吗?或者,甚至使用 Mono 并利用 .NET 实现(也是一个干净、纯代码、无依赖的项目)来构建一个静态库?

或者,最后,有人知道 bCrypt 代码的 Objective-C 实现吗?看起来很简单,我只是对 .NET/C#/Ruby 了解不够,无法自己翻译。

4

3 回答 3

10

我最近开源了我自己的 BCrypt Objective C 实现。我也寻找了现有的 Objective C 实现,但无济于事。所以我从 Java 移植了一个!

它没有任何外部库或框架依赖项,因此它可能非常适合您。

你可以在这里找到它... http://www.jayfuerstenberg.com/blog/bcrypt-in-objective-c https://github.com/jayfuerstenberg/JFCommon

于 2011-07-29T11:43:17.073 回答
4

iOS 具有处理此类任务的 Security.framework。请参阅Mac OS X 和 iOS 安全服务,要使用证书、密钥和信任服务存储安全密码,请参阅如何加密和解密数据的示例。您在 bcrypt 上链接的文章对设备编程几乎没有价值,因为它是关于如何在服务器端存储安全密码的。在设备上,您将始终是客户端,客户端如何安全存储密码的规则不同,因为几乎所有质询协议都要求它们知道原始密码,并且客户端暴露于与服务器端完全不同的威胁模型。

于 2011-05-19T22:16:04.487 回答
2

Objective C 可以使用 C 库。当https://github.com/rg3/bcrypthttp://www.openwall.com/crypt/存在时,为什么还要打扰 Ruby ?

于 2011-05-19T22:02:47.723 回答