rancoud/crypt

Crypt package

3.3.2 2024-12-07 19:06 UTC

README

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