Callable wrapper around PHP's password hashing and verification, optional with PSR3 Logger support

2.1.0 2023-01-04 14:54 UTC

This package is auto-updated.

Last update: 2024-04-04 17:42:11 UTC


README

Callable wrapper around PHP's password hashing and verification, optional with PSR3 Logger support

Packagist PHP version Tests

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