一个真实的密码强度评估器。
这是一个基于 Dropbox 团队创建的 zxcvbn 包的纯 Swift 实现。 最初的 JavaScript 库可以在这里找到。
这是目前唯一的纯 Swift 实现,Vapor 使用时需要此实现,但它也可以很好地与任何用 Swift 编写的 iOS 或 macOS 项目配合使用
已在 Swift 5.9 中测试
添加到您的依赖项:
dependencies: [
// Other packages
.package(url: "https://github.com/DeVitoC/zxcvbn-swift", from: "1.00.02")
]
添加到您的目标:
targets: [
.executableTarget(
dependencies: [
// Other dependencies
.product(name: "zxcvbn", package: "zxcvbn-swift")
]
)
]
从菜单中选择“File -> Add Package Dependencies”(文件 -> 添加包依赖项)
搜索 github.com/DeVitoC/zxcvbn-swift
选择 zxcvbn-swift(确保它来自 github.com/DeVitoC)。
选择“Up To Next Major Version”(直到下一个主要版本)
点击“Add Package”(添加包)
将密码作为第一个参数传递,并将用户提供的输入列表作为 userInputs
参数传递(可选)。
在 Vapor 中使用示例,显示了返回对象的所有可能属性,并仅返回分数。
import zxcvbn
//Other code
func checkPassword(req: Request) async throws -> Int {
let password = try req.content.decode(String.self)
let result = zxcvbn(password)
let score = result.score ?? 0
let calcTime = result.calcTime
let feedback = result.feedback
let guesses = result.guesses
let guessesLog10 = result.guessesLog10
let passwordResult = result.password
let crackTimesSeconds = result.crackTimesSeconds
let crackTimesSecondsOfflineFastHash = crackTimesSeconds?.offlineFastHashing1e10PerSecond
let crackTimesSecondsOfflineSlowHash = crackTimesSeconds?.offlineSlowHashing1e4PerSecond
let crackTimesSecondsOnlineThrottling10PerSecond = crackTimesSeconds?.onlineNoThrottling10PerSecond
let crackTimesSecondsOnlineThrottling100PerSecond = crackTimesSeconds?.onlineThrottling100PerHour
let crackTimesDisplay = result.crackTimesDisplay
let crackTimesDisplayOfflineFastHash = crackTimesDisplay?.offlineFastHashing1e10PerSecond
let crackTimesDisplayOfflineSlowHash = crackTimesDisplay?.offlineSlowHashing1e4PerSecond
let crackTimesDisplayOnlineThrottling10PerSecond = crackTimesDisplay?.onlineNoThrottling10PerSecond
let crackTimesDisplayOnlineThrottling100PerSecond = crackTimesDisplay?.onlineThrottling100PerHour
return score
}
该项目根据 MIT 许可证获得许可。