Skip to content

Repository files navigation

Crypt Package

Packagist PHP Version SupportPackagist VersionPackagist DownloadsComposer dependenciesTest workflowCodecov

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

Installation

composer require rancoud/crypt

How to use it?

useRancoud\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.

publicstaticfunction hash(string$password): string

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

publicstaticfunction needsRehash(string$hash): bool

Checks if password and hash match.

publicstaticfunction verify(string$password, string$hash): bool

Algorithms

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

publicstaticfunction getCurrentAlgo(): string

Sets the algorithm to argon2id.

publicstaticfunction useArgon2id(): void

Sets the algorithm to argon2i.

publicstaticfunction useArgon2i(): void

Sets the algorithm to 2y (bcrypt).

publicstaticfunction useBcrypt(): void

Options

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

publicstaticfunction setOptionArgon2iMemoryCost(int$bytes): void

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

publicstaticfunction setOptionArgon2iThreads(int$threads): void

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

publicstaticfunction setOptionArgon2iTimeCost(int$time): void

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

publicstaticfunction setOptionBcryptCost(int$rounds): void

Returns options for argon2id and argon2i.

publicstaticfunction getOptionsArgon2i(): array

Returns options for 2y (bcrypt).

publicstaticfunction getOptionsBcrypt(): array

Random string

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

publicstaticfunction getRandomString(int$length = 64, ?string$characters = null): string

Returns the character pool.

publicstaticfunction getCharactersForRandomString(): string

Sets the character pool.

publicstaticfunction 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

Releases

Used by

Contributors

Languages