zxcvbn-ios 1.0.4

zxcvbn-ios 1.0.4

测试已测试
语言语言 Obj-CObjective C
许可 MIT
发布最新版本2016年5月

Leah Culver 维护。




  • 作者:
  • Leah Culver
.................................................bbb....................
.zzzzzzzzzz..xxx....xxx....cccccccc..vvv....vvv..bbb.........nnnnnnn....
.....zzzz......xxxxxx....cccc........vvv....vvv..bbbbbbbb....nnn...nnn..
...zzzz........xxxxxx....cccc..........vvvvvv....bbb....bb...nnn...nnn..
.zzzzzzzzzz..xxx....xxx....cccccccc......vv......bbbbbbbb....nnn...nnn..
........................................................................

zxcvbn 的 Objective-C 版本,这是一个用于评估密码强度的库,适用于 iOS。

DBZxcvbn 通过模式匹配和保守的熵计算尝试提供合理的密码建议。它可以识别 10k 个常见密码、常见的美洲人姓名和姓氏、常见的英文单词以及常见的模式,如日期、重复(aaa)、序列(abcd)和 QWERTY 模式。

查看原始的 JavaScript(或 CoffeeScript)或 Python 版本

要了解完整动机,请参阅 zxcvbn: realistic password strength estimation

安装

即将推出。

使用

要使用 DBZxcvbn,最简单的方法是在表单中显示 DBPasswordStrengthMeter。设置您的 UITextFieldDelegate 并添加一个 DBPasswordStrengthMeter

请参见这里的示例: DBCreateAccountViewController.m

用户键入时,您可以调用 scorePassword: 如下

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    NSString *password = [textField.text stringByReplacingCharactersInRange:range withString:string];

    [self.passwordStrengthMeterView scorePassword:password];

    return YES;
}

以下是表单中 DBPasswordStrengthMeter 的样子

要使用不含 DBPasswordStrengthMeter 视图的 DBZxcvbn,只需导入 DBZxcvbn.h,创建一个新的 DBZxcvbn 实例,然后调用 passwordStrength:userInputs:

#import <Zxcvbn/DBZxcvbn.h>

DBZxcvbn *zxcvbn = [[DBZxcvbn alloc] init];
DBResult *result = [zxcvbn passwordStrength:password userInputs:userInputs];

DBResult 包含一些属性

result.entropy          // bits

result.crackTime        // estimation of actual crack time, in seconds.

result.crackTimeDisplay // same crack time, as a friendlier string:
                        // "instant", "6 minutes", "centuries", etc.

result.score            // [0,1,2,3,4] if crack time is less than
                        // [10**2, 10**4, 10**6, 10**8, Infinity].
                        // (useful for implementing a strength bar.)

result.matchSequence    // the list of patterns that zxcvbn based the
                        // entropy calculation on.

result.calcTime         // how long it took to calculate an answer,
                        // in milliseconds. usually only a few ms.

可选的 userInputs 参数是一个字符串数组,DBZxcvbn 将将其添加到其内部字典中。这可以是任何您喜欢的字符串列表,但主要用于表单其他字段(如姓名和电子邮件)的用户输入。这样,包含用户个人信息的密码会受到严重处罚。此列表还适用于特定站点的词汇表。

致谢

感谢 Dropbox 支持独立项目和开源软件。

非常感谢 Dan Wheeler 为原始的 CoffeeScript 实现所作的工作。感谢 Ryan Pearl 对其 Python 版本 的改编。我很荣幸能够复制您的代码 :)

响应早期库的致谢...

非常感谢 Mark Burnett 发布他的 10k 个顶级密码列表

http://xato.net/passwords/more-top-worst-passwords

以及他的 2006 年著作,“完美密码:选择、保护、认证”

衷心感谢维基词典的贡献者创建了用于电视剧和电影中的英文频率列表:http://en.wiktionary.org/wiki/Wiktionary:Frequency_lists

最后但同样重要的是,向xkcd表示诚挚的感谢 :) https://xkcd.com/936/