{"id":17861224,"url":"https://github.com/jonathanstowe/crypt-anypasswordhash","last_synced_at":"2025-04-02T20:47:28.952Z","repository":{"id":66980390,"uuid":"229075437","full_name":"jonathanstowe/Crypt-AnyPasswordHash","owner":"jonathanstowe","description":"Create a cryptographic password hash by the best means available","archived":false,"fork":false,"pushed_at":"2022-08-07T08:45:16.000Z","size":17,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2023-04-22T17:06:59.539Z","etag":null,"topics":["crypt","hash","password","raku"],"latest_commit_sha":null,"homepage":null,"language":"Raku","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"artistic-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jonathanstowe.png","metadata":{"files":{"readme":"README.md","changelog":"Changes","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-12-19T14:48:41.000Z","updated_at":"2022-08-07T08:45:19.000Z","dependencies_parsed_at":"2023-02-25T01:31:07.452Z","dependency_job_id":null,"html_url":"https://github.com/jonathanstowe/Crypt-AnyPasswordHash","commit_stats":null,"previous_names":[],"tags_count":8,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonathanstowe%2FCrypt-AnyPasswordHash","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonathanstowe%2FCrypt-AnyPasswordHash/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonathanstowe%2FCrypt-AnyPasswordHash/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonathanstowe%2FCrypt-AnyPasswordHash/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jonathanstowe","download_url":"https://codeload.github.com/jonathanstowe/Crypt-AnyPasswordHash/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246892796,"owners_count":20850846,"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":["crypt","hash","password","raku"],"created_at":"2024-10-28T08:43:25.540Z","updated_at":"2025-04-02T20:47:28.753Z","avatar_url":"https://github.com/jonathanstowe.png","language":"Raku","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Crypt::AnyPasswordHash\n\nUse best installed password encryption available\n\n![Build Status](https://github.com/jonathanstowe/Crypt-AnyPasswordHash/workflows/CI/badge.svg)\n\n## Synopsis\n\n    use Crypt::AnyPasswordHash;\n\n    my $password = 'somepassword';\n\n    my Str $hash = hash-password($password);\n\n    if check-password($hash, $password ) {\n        # password ok\n    }\n\n## Description\n\nThis module exports two subroutines `hash-password` and `check-password` which encrypt password and check a provided password against an encrypted hash.\n\nThe implementation for the `hash-password` is provided by the first of:\n\n  * [Crypt::SodiumPasswordHash](https://github.com/jonathanstowe/Crypt-SodiumPasswordHash)\n\n  * [Crypt::Argon2](https://github.com/skinkade/p6-crypt-argon2)\n\n  * [Crypt::LibScrypt](https://github.com/jonathanstowe/Crypt-LibScrypt) \n\n  * [Crypt::SodiumScrypt](https://github.com/jonathanstowe/Crypt-SodiumScrypt)\n\n  * [Crypt::Libcrypt](https://github.com/jonathanstowe/Crypt-Libcrypt)\n\nwhich can be found. `Crypt::Libcrypt` will be installed as a dependency so it will nearly always work but is dependent on the mechanisms provided by the `libcrypt`: with a fairly recent `libcrypt` it will be able to determine and use the best available algorithm, falling back to attempt SHA-512, however if that isn't available it may fall back to DES which is not considered secure enough for production use. You can tell you are getting DES when the hash returned by `hash-password` is only 13 characters long, if this is the case then you should install one of the other providers.\n\nThe `check-password` will attempt to validate against all the available mechanisms until one validates the password or the mechanisms are exhausted. This is so that, if you are validating against stored hashes, if a new supported module is installed or this module is upgraded then you will still be able to verify against hashes made by a previous mechanism.\n\n## Installation\n\nIf you have a working Rakudo installation, you should be able to install this with *zef* :\n\n     zef install Crypt::AnyPasswordHash\n\n\t # or from a local copy\n\n     zef install .\n\n\n## Support\n\nIf you have any suggestions or patches, please send then to [Github](https://github.com/jonathanstowe/Crypt-AnyPasswordHash/issues)\n\nNew hashing providers are welcomed - any new modules should export the subroutines for hashing and verifying.\n\n[Crypt::Bcrypt](https://github.com/skinkade/p6-Crypt-Bcrypt) does work but it needs a small change to be detected.\n\n## Licence\n\nThis is free software.\n\nPlease see the [LICENCE](LICENCE) file in the distribution\n\n© Jonathan Stowe 2019 - 2021\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjonathanstowe%2Fcrypt-anypasswordhash","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjonathanstowe%2Fcrypt-anypasswordhash","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjonathanstowe%2Fcrypt-anypasswordhash/lists"}