zxcvbn

一个真实的密码强度评估器。

这是一个基于 Dropbox 团队创建的 zxcvbn 包的纯 Swift 实现。 最初的 JavaScript 库可以在这里找到。

这是目前唯一的纯 Swift 实现,Vapor 使用时需要此实现,但它也可以很好地与任何用 Swift 编写的 iOS 或 macOS 项目配合使用

特性

已在 Swift 5.9 中测试

安装

在 Vapor 中安装

添加到您的依赖项:

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")
        ]
    )
]

在 iOS 中安装

从菜单中选择“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 许可证获得许可。