Skip to content

rancoud/Crypt

Repository files navigation

Crypt Package

Packagist PHP Version Support Packagist Version Packagist Downloads Composer dependencies Test workflow Codecov

Crypt using Argon2id by default with Argon2i and bcrypt in fallback.

Installation

composer require rancoud/crypt

How to use it?

use Rancoud\Crypt\Crypt;

$password = 'my_password';
$hash = Crypt::hash($password);
$result = Crypt::verify($password, $hash);

// use only Argon2i
Crypt::useArgon2i();

// use only bcrypt
Crypt::useBcrypt();

Crypt

Main functions

Hashs the password according to the selected algorithm.

public static function hash(string $password): string

Checks whether the hash needs to be rehash to match the selected algorithm and options.

public static function needsRehash(string $hash): bool

Checks if password and hash match.

public static function verify(string $password, string $hash): bool

Algorithms

Returns current algorithm.
Possible values are argon2id, argon2i or 2y.

public static function getCurrentAlgo(): string

Sets the algorithm to argon2id.

public static function useArgon2id(): void

Sets the algorithm to argon2i.

public static function useArgon2i(): void

Sets the algorithm to 2y (bcrypt).

public static function useBcrypt(): void

Options

Sets memory cost for argon2id and argon2i.
Must be equal or greater than 8.

public static function setOptionArgon2iMemoryCost(int $bytes): void

Sets number of threads for argon2id and argon2i.
Must be equal or greater than 1.

public static function setOptionArgon2iThreads(int $threads): void

Sets time cost for argon2id and argon2i.
Must be equal or greater than 1.

public static function setOptionArgon2iTimeCost(int $time): void

Sets rounds cost for 2y (bcrypt).
Must be between 4 and 31.

public static function setOptionBcryptCost(int $rounds): void

Returns options for argon2id and argon2i.

public static function getOptionsArgon2i(): array

Returns options for 2y (bcrypt).

public static function getOptionsBcrypt(): array

Random string

Returns a fixed-size string containing random characters from the preselection.
The default character pool is !"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_``abcdefghijklmnopqrstuvwxyz{|}~.

public static function getRandomString(int $length = 64, ?string $characters = null): string

Returns the character pool.

public static function getCharactersForRandomString(): string

Sets the character pool.

public static function setCharactersForRandomString(string $characters): void

How to Dev

composer ci for php-cs-fixer and phpunit and coverage
composer lint for php-cs-fixer
composer test for phpunit and coverage