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 函数计算盐、散列和比较散列。请参见示例项目,以更好地理解如何使用这些函数。
为 JKBCrypt
和 JKBCryptRandom
类中的函数提供更多测试。
该代码是用 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实现。