{"id":15524204,"url":"https://github.com/leocavalcante/password-dart","last_synced_at":"2025-04-23T07:29:28.110Z","repository":{"id":40743685,"uuid":"135753774","full_name":"leocavalcante/password-dart","owner":"leocavalcante","description":"A set of high-level APIs over PointyCastle and CryptoUtils to hash and verify passwords securely.","archived":false,"fork":false,"pushed_at":"2021-05-12T08:43:46.000Z","size":14,"stargazers_count":54,"open_issues_count":3,"forks_count":18,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-29T22:41:18.225Z","etag":null,"topics":["cryptography","dart","digest","hash","password","pbkdf2"],"latest_commit_sha":null,"homepage":"","language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/leocavalcante.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-06-01T19:02:06.000Z","updated_at":"2025-02-12T16:38:16.000Z","dependencies_parsed_at":"2022-09-13T08:42:16.245Z","dependency_job_id":null,"html_url":"https://github.com/leocavalcante/password-dart","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leocavalcante%2Fpassword-dart","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leocavalcante%2Fpassword-dart/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leocavalcante%2Fpassword-dart/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leocavalcante%2Fpassword-dart/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/leocavalcante","download_url":"https://codeload.github.com/leocavalcante/password-dart/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250390433,"owners_count":21422702,"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":["cryptography","dart","digest","hash","password","pbkdf2"],"created_at":"2024-10-02T10:49:44.733Z","updated_at":"2025-04-23T07:29:28.055Z","avatar_url":"https://github.com/leocavalcante.png","language":"Dart","funding_links":["https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick\u0026hosted_button_id=E4F45BFVMFVQW"],"categories":[],"sub_categories":[],"readme":"# password\n\n[![Pub Package](https://img.shields.io/pub/v/password.svg)](https://pub.dartlang.org/packages/password)\n[![Build Status](https://travis-ci.org/leocavalcante/password-dart.svg?branch=master)](https://travis-ci.org/leocavalcante/password-dart)\n[![Donate](https://www.paypalobjects.com/en_US/i/btn/btn_donate_SM.gif)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick\u0026hosted_button_id=E4F45BFVMFVQW)\n\nA set of high-level APIs over [PointyCastle](https://pub.dartlang.org/packages/pointycastle) to hash and verify passwords securely.\u003cbr\u003e\nHeavily inspired on [PHP's Password Hashing Functions](http://php.net/manual/en/ref.password.php).\n\n\u003e Looking for two-way cryptography (encryption+decryption)? Please, visit [encrypt](https://github.com/leocavalcante/encrypt).\n\n## API\n\n### `Password.hash`\n\n```dart\nPassword.hash('password', new PBKDF2());\n// $pcks$64,10000,64$530f8afbc74536b9a963b4f1c4cb738bcea7403d4d606b6e074ec5d3baf39d18$56158864e365bd78f6afda27f9a239bcb3f2b7a4773d4c0d0858c86266119d1e35aae9ca1a4777ed3d85c42caeed0c57cc7e09fe7d152d5d4d4ee08506c2b41a\n```\n\n### `Password.verify`\n\n```dart\nPassword.verify('password', previousOutput);\n// true\n\nPassword.verify('secret', previousOutput);\n// false\n```\n\n## Defaults\n\nIn almost cases, you should rely on default PRNG for salts. It is cryptographically secure and unique for each password.\n\nOn the other hand, you are encouraged to change interations count for what your hardware can handle.\n\n### PBKDF2\n\n|   |   |\n| - | - |\n| Digest | SHA-512 |\n| Block size | 64 bytes |\n| Salt | 32 bytes [Fortuna](https://en.wikipedia.org/wiki/Fortuna_(PRNG)) |\n| Iteration count | 10000 |\n| Key length | 64 bytes |\n\n***\n\nWaiting for [Argon2](https://en.wikipedia.org/wiki/Argon2).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fleocavalcante%2Fpassword-dart","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fleocavalcante%2Fpassword-dart","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fleocavalcante%2Fpassword-dart/lists"}