{"id":18967429,"url":"https://github.com/tomfaulkner/simple-password-generation","last_synced_at":"2025-07-17T07:04:44.576Z","repository":{"id":54827417,"uuid":"174737685","full_name":"TomFaulkner/simple-password-generation","owner":"TomFaulkner","description":"Generate and check secure passwords in Python","archived":false,"fork":false,"pushed_at":"2022-03-17T01:39:35.000Z","size":750,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-06-28T13:48:02.690Z","etag":null,"topics":["haveibeenpwned","password-generator","passwords","security"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/TomFaulkner.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-03-09T19:32:55.000Z","updated_at":"2022-05-30T18:51:37.000Z","dependencies_parsed_at":"2022-08-14T04:01:02.906Z","dependency_job_id":null,"html_url":"https://github.com/TomFaulkner/simple-password-generation","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/TomFaulkner/simple-password-generation","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TomFaulkner%2Fsimple-password-generation","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TomFaulkner%2Fsimple-password-generation/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TomFaulkner%2Fsimple-password-generation/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TomFaulkner%2Fsimple-password-generation/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TomFaulkner","download_url":"https://codeload.github.com/TomFaulkner/simple-password-generation/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TomFaulkner%2Fsimple-password-generation/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265575481,"owners_count":23790776,"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","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":["haveibeenpwned","password-generator","passwords","security"],"created_at":"2024-11-08T14:43:18.429Z","updated_at":"2025-07-17T07:04:44.546Z","avatar_url":"https://github.com/TomFaulkner.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# simple-password-generation\n\nGenerate and check secure passwords in Python.\n\nThis is intended for use as a password strength checking and suggestion library for APIs, though it could also be integrated into a password database application.\n\n# Usage\n\n    \u003e\u003e\u003e from simple_pass import create_password, check_havebeenpwned, scoring\n    \u003e\u003e\u003e password = create_password()\n    \u003e\u003e\u003e print(password)\n    unfurcate necessitate nonfact retrogradation swathband orthitic\n    \n    \u003e\u003e\u003e check_havebeenpwned(password)\n    True\n    \u003e\u003e\u003e scoring(password)\n    (True, 75)\n\n\n## HaveIBeenPwned\nGenerated passwords are automatically securely checked against the [HaveIBeenPwned](https://haveibeenpwned.com) database.\nPartial hashes are sent using the HaveIBeenPwned API. This can not be reconstructed to determine the checked password.\n\nUser generated passwords can be checked by calling `check_havebeenpwned(password)`.\n\n\n## Scoring Options\nPasswords can be checked with a scoring based system using the following options.\n\n    def scoring(\n        password,\n        *,\n        minimum_length=8,\n        minimum_score=20,\n        points_for_lower=2,\n        points_for_upper=2,\n        points_for_numbers=2,\n        points_per_special=2,\n        special_characters=\" !@#$%^\u0026*()-=_+.,\u003c\u003e[]{}/?\\\\|\",\n        points_per_character=1,\n    ):\n\nI believe this scoring system encourages long and difficult to guess passwords by rewarding lengthy passwords and special characters, but without requiring a specific password format or frustrating rules.\n\n## XKCD, Comics, Horses, and batteries\n\nFor wisdom on what makes a good password see the famous [xkcd correct horse battery staple comic](https://xkcd.com/936/). The `correct horse battery staple` example passes with a score of 36 using the default parameters. It does not pass the HaveIBeenPwned check, however, as it is a well known password that has probably been found in many breaches.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftomfaulkner%2Fsimple-password-generation","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftomfaulkner%2Fsimple-password-generation","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftomfaulkner%2Fsimple-password-generation/lists"}