.................................................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/