JKBCrypt 0.1.0

JKBCrypt 0.1.0

测试测试
语言语言 SwiftSwift
许可证 MIT
发布最新发布2016年3月
SPM支持 SPM

Jakob Frick (koogle)维护。



JKBCrypt 0.1.0

  • 作者:
  • Jakob Frick

JKBCrypt

JKBCrypt 是一个使用 Swift 编写的 bcrypt 实现。它目前可以使用生成的盐值生成盐和散列短语。

导入代码

lib/ 目录中的文件导入到您认为合适的位置。最终,我想把这个项目放到 CocoaPod 中,但这还没有发生。

或者使用 CocoaPod。

使用代码

JKBCrypt.generateSaltWithNumberOfRounds(rounds: UInt) -> String
JKBCrypt.generateSalt() -> String
JKBCrypt.hashPassword(password: String, withSalt salt: String) -> String?
JKBCrypt.verifyPassword(password: String, matchesHash hash: String) -> Bool?

generateSaltWithNumberOfRounds() 类函数将使用提供的轮数生成随机盐。轮数必须在 4 和 31(包含)之间。

generateSalt() 类便捷函数将使用默认的 10 轮生成随机盐。这个数字可以根据您的具体需求进行调整。

hashPassword(withSalt:) 类函数将使用盐值散列密码短语。如果在处理过程中出现问题,将返回 nil。请检查该函数的文档以获取更多详细信息。

verifyPassword(matchesHash:) 类便捷函数将使用散列值散列密码短语,然后返回新的散列值与给定的散列值之间的比较。如果在处理过程中出现问题,将返回 nil。请检查该函数的文档以获取更多详细信息。

示例

有一个示例 Xcode 项目,使用 JKBCrypt 函数计算盐、散列和比较散列。请参见示例项目,以更好地理解如何使用这些函数。

路线图

测试

JKBCryptJKBCryptRandom 类中的函数提供更多测试。

优化

该代码是用 Swift2编写的。代码通过使用 UnsafePointer<Type> 对大部分数组索引进行了优化,但仍然比在同一台机器上运行的 Objective-C 中的 bcrypt 慢得多(Objective-C: ~0.2s/10 rnds; Swift: 4-5s/10 rnds)。需对 Swift2 进行验证。

问题、错误等。

如果您有任何问题、bug或功能建议,请创建一个问题。

致谢

本项目受到Jay Fuerstenberg(Git仓库:[JFCommon](https://github.com/jayfuerstenberg/JFCommon))对Objective-C端口的改编,并在此基础上进行开发。

Objective-C端口基于Damien Miller最初在此处找到的Java实现。