germania-kg / hash
Callable wrapper around PHP's password hashing and verification, optional with PSR3 Logger support
Requires
- php: ^7.4|^8.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.0
- php-coveralls/php-coveralls: ^2.0
- phpspec/prophecy-phpunit: ^2.0
- phpstan/phpstan: ^1.9
- phpunit/phpunit: ^8.0|^9.0
- spatie/phpunit-watcher: ^1.0
README
Callable wrapper around PHP's password hashing and verification, optional with PSR3 Logger support
Installation with Composer
$ composer require germania-kg/hash $ composer require germania-kg/hash:^2
PasswordHashCallable
This class wraps PHP's password_hash function in a callable class. It optionally accepts any PSR-3 Logger of which the debug method will be called each time it is invoked.
<?php use Germania\Hash\PasswordHashCallable; // Create Callable, optional with PSR-3 Logger $hashing = new PasswordHashCallable; $hashing = new PasswordHashCallable( $monolog ); // Get hashed value echo $hashing( "mysecret" );
Configuration
You optionally may define cost and algo parameters for PHP's password_hash function. They default to 14
and \PASSWORD_BCRYPT
respectively.
<?php use Germania\Hash\PasswordHashCallable; // Defaults PasswordHashCallable::$cost = 14; PasswordHashCallable::$algo = \PASSWORD_BCRYPT;
PasswordVerifyCallable
This class wraps PHP's password_verify function in a callable class. It optionally accepts any PSR-3 Logger of which the debug method will be called each time it is invoked.
<?php use Germania\Hash\PasswordVerifyCallable; // Create Callable, optional with PSR-3 Logger $verifier = new PasswordVerifyCallable; $verifier = new PasswordVerifyCallable( $monolog ); // Get hashed value $secret = "foobar"; $hash = password_hash($secret, \PASSWORD_BCRYPT); $hash = password_hash($secret, \PASSWORD_DEFAULT) // Will be TRUE echo $verifier( "foobar", $hash ); // Will be FALSE echo $verifier( "wrong", $hash );
CallbackHashCallable
This class requires a custom callback (Callable or anonymous function). It optionally accepts any PSR-3 Logger of which the debug method will be called each time it is invoked.
<?php use Germania\Hash\CallbackHashCallable; // Create anonymous function $callback = function( $token ) { return password_hash( $token ); }; // Create Callable, optional with PSR-3 Logger $hashing = new CallbackHashCallable( $callback ); $hashing = new CallbackHashCallable( $callback, $monolog ); // Get hashed value echo $hashing( "mysecret" );
Issues
See issues list.
Development
$ git clone https://github.com/GermaniaKG/Hash.git
$ cd Hash
$ composer install
Unit tests
Either copy phpunit.xml.dist
to phpunit.xml
and adapt to your needs, or leave as is. Run PhpUnit test or composer scripts like this:
$ composer test # or $ vendor/bin/phpunit