iOS中没有bcrypt实现...可以使用其他语言,创建静态库吗?

时间:2011-05-19 21:57:17

标签: c# java objective-c hash bcrypt

在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自己翻译它。

3 个答案:

答案 0 :(得分:10)

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

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

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

答案 1 :(得分:4)

iOS有Security.framework来处理此类攻击。请参阅Mac OS X and iOS Security Services,并存储您将使用Certificate, Key and Trust Services,的安全密码,请参阅示例Encrypting and Decrypting Data。您在bcrypt上链接的文章对于设备编程几乎没有价值,因为它关于如何在服务器端存储安全密码。在设备上,您将永远是客户端,客户端存储密码的安全规则如何不同,因为他们需要知道几乎所有质询协议中的原始密码,并且客户端暴露于服务器端完全不同的威胁模型。

答案 2 :(得分:2)

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