Callable wrapper around PHP's password hashing and verification, optional with PSR3 Logger support
$ composer require germania-kg/hash
$ composer require germania-kg/hash:^2
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" );
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;
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 );
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" );
See issues list.
$ git clone https://github.com/GermaniaKG/Hash.git
$ cd Hash
$ composer install
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