{"id":1927,"url":"https://github.com/dropbox/zxcvbn-ios","last_synced_at":"2025-08-02T05:33:05.623Z","repository":{"id":13986728,"uuid":"16687698","full_name":"dropbox/zxcvbn-ios","owner":"dropbox","description":"A realistic password strength estimator.","archived":false,"fork":false,"pushed_at":"2023-10-24T17:18:12.000Z","size":2452,"stargazers_count":223,"open_issues_count":8,"forks_count":66,"subscribers_count":24,"default_branch":"master","last_synced_at":"2025-07-11T11:54:41.573Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://tech.dropbox.com/2012/04/zxcvbn-realistic-password-strength-estimation/","language":"Objective-C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"svg/svgo","license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dropbox.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2014-02-10T07:25:21.000Z","updated_at":"2024-05-10T10:31:32.000Z","dependencies_parsed_at":"2022-08-07T07:16:05.886Z","dependency_job_id":"af081166-103f-4d92-a00c-4bf368afb509","html_url":"https://github.com/dropbox/zxcvbn-ios","commit_stats":{"total_commits":52,"total_committers":10,"mean_commits":5.2,"dds":0.1923076923076923,"last_synced_commit":"dbcc963a8265e65982c6f1e58f60bde08d51bd9d"},"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/dropbox/zxcvbn-ios","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dropbox%2Fzxcvbn-ios","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dropbox%2Fzxcvbn-ios/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dropbox%2Fzxcvbn-ios/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dropbox%2Fzxcvbn-ios/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dropbox","download_url":"https://codeload.github.com/dropbox/zxcvbn-ios/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dropbox%2Fzxcvbn-ios/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268339405,"owners_count":24234544,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-02T02:00:12.353Z","response_time":74,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-01-05T20:15:59.174Z","updated_at":"2025-08-02T05:33:05.364Z","avatar_url":"https://github.com/dropbox.png","language":"Objective-C","funding_links":[],"categories":["Security"],"sub_categories":["Unofficial","Other free courses"],"readme":"```\n.................................................bbb....................\n.zzzzzzzzzz..xxx....xxx....cccccccc..vvv....vvv..bbb.........nnnnnnn....\n.....zzzz......xxxxxx....cccc........vvv....vvv..bbbbbbbb....nnn...nnn..\n...zzzz........xxxxxx....cccc..........vvvvvv....bbb....bb...nnn...nnn..\n.zzzzzzzzzz..xxx....xxx....cccccccc......vv......bbbbbbbb....nnn...nnn..\n........................................................................\n```\n\nAn obj-c port of zxcvbn, a password strength estimation library, designed for iOS.\n\n`DBZxcvbn` attempts to give sound password advice through pattern matching\nand conservative entropy calculations. It finds 10k common passwords,\ncommon American names and surnames, common English words, and common\npatterns like dates, repeats (aaa), sequences (abcd), and QWERTY\npatterns.\n\nCheck out the original [JavaScript](https://github.com/dropbox/zxcvbn) (well, CoffeeScript) or the [Python port](https://github.com/dropbox/python-zxcvbn).\n\nFor full motivation, see [zxcvbn: realistic password strength estimation](https://blogs.dropbox.com/tech/2012/04/zxcvbn-realistic-password-strength-estimation/).\n\n# Installation\n\nComing soon.\n\n# Use\n\nThe easiest way to use `DBZxcvbn` is by displaying a `DBPasswordStrengthMeter` in your form. Set up your `UITextFieldDelegate` and add a `DBPasswordStrengthMeter`.\n\nSee the example here: [DBCreateAccountViewController.m](https://github.com/dropbox/zxcvbn-ios/blob/master/Example/DBCreateAccountViewController.m)\n\nAs the user types, you can call `scorePassword:` like so:\n``` objc\n- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string\n{\n    NSString *password = [textField.text stringByReplacingCharactersInRange:range withString:string];\n\n    [self.passwordStrengthMeterView scorePassword:password];\n\n    return YES;\n}\n```\n\nHere is what `DBPasswordStrengthMeter` looks like in a form:\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"https://raw.githubusercontent.com/dropbox/zxcvbn-ios/master/zxcvbn-example.png\" width=\"360\" height=\"600\" /\u003e\n\u003c/p\u003e\n\nTo use `DBZxcvbn` without the `DBPasswordStrengthMeter` view simply import `DBZxcvbn.h`, create a new instance of `DBZxcvbn`, then call `passwordStrength:userInputs:`.\n\n``` objc\n#import \u003cZxcvbn/DBZxcvbn.h\u003e\n\nDBZxcvbn *zxcvbn = [[DBZxcvbn alloc] init];\nDBResult *result = [zxcvbn passwordStrength:password userInputs:userInputs];\n```\n\nThe DBResult includes a few properties:\n\n``` objc\nresult.entropy          // bits\n\nresult.crackTime        // estimation of actual crack time, in seconds.\n\nresult.crackTimeDisplay // same crack time, as a friendlier string:\n                        // \"instant\", \"6 minutes\", \"centuries\", etc.\n\nresult.score            // [0,1,2,3,4] if crack time is less than\n                        // [10**2, 10**4, 10**6, 10**8, Infinity].\n                        // (useful for implementing a strength bar.)\n\nresult.matchSequence    // the list of patterns that zxcvbn based the\n                        // entropy calculation on.\n\nresult.calcTime         // how long it took to calculate an answer,\n                        // in milliseconds. usually only a few ms.\n````\n\nThe optional `userInputs` argument is an array of strings that `DBZxcvbn`\nwill add to its internal dictionary. This can be whatever list of\nstrings you like, but is meant for user inputs from other fields of the\nform, like name and email. That way a password that includes the user's\npersonal info can be heavily penalized. This list is also good for\nsite-specific vocabulary.\n\n# Acknowledgments\n\nThanks to Dropbox for supporting independent projects and open source software.\n\nA huge thanks to [Dan Wheeler](https://github.com/lowe) for the original [CoffeeScript implementation](https://github.com/dropbox/zxcvbn). Thanks to [Ryan Pearl](https://github.com/dropbox/python-zxcvbn) for his [Python port](). I've enjoyed copying your code :)\n\nEchoing the acknowledgments from earlier libraries...\n\nMany thanks to Mark Burnett for releasing his 10k top passwords list:\n\nhttp://xato.net/passwords/more-top-worst-passwords\n\nand for his 2006 book,\n\"Perfect Passwords: Selection, Protection, Authentication\"\n\nHuge thanks to Wiktionary contributors for building a frequency list\nof English as used in television and movies:\nhttp://en.wiktionary.org/wiki/Wiktionary:Frequency_lists\n\nLast but not least, big thanks to xkcd :)\nhttps://xkcd.com/936/\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdropbox%2Fzxcvbn-ios","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdropbox%2Fzxcvbn-ios","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdropbox%2Fzxcvbn-ios/lists"}