strawbrary / php-blake2

PHP wrapper for the BLAKE2 hashing function
MIT License
40 stars 15 forks source link

PHP BLAKE2 Extension

Build Status

BLAKE2 is an improved version of BLAKE, one the finalists in the NIST SHA-3 competition. Like BLAKE or SHA-3, BLAKE2 offers the highest security, yet is fast as MD5 on 64-bit platforms and requires at least 33% less RAM than SHA-2 or SHA-3 on low-end systems. This implementation uses the BLAKE2b variant of the algorithm which is optimized for 64-bit systems. The algorithm was designed by Jean-Philippe Aumasson, Samuel Neves, Zooko Wilcox-O'Hearn, and Christian Winnerlein.

Installation

Clone the repository and compile it:

$ git clone git@github.com:strawbrary/php-blake2.git
$ cd php-blake2
$ phpize
$ ./configure --enable-blake2
$ make && sudo make install

Enable the extension by adding the following line to your php.ini file:

extension=blake2.so

You may need to restart your web server to load the extension.

Usage

string blake2 ( string $str [, int $outputSize = 64, string $key, bool $rawOutput = false ] )
string blake2b ( string $str [, int $outputSize = 64, string $key, bool $rawOutput = false ] )

is an alias to blake2

string blake2s ( string $str [, int $outputSize = 32, string $key, bool $rawOutput = false ] )
string blake2_file ( string $filename [, bool $rawOutput = false ] )
string b2sum ( string $filename [, bool $rawOutput = false ] )

is an alias to blake2_file

Examples

echo blake2('');

786a02f742015903c6c6fd852552d272912f4740e15847618a86e217f71f5419d25e1031afee585313896444934eb04b903a685b1448b755d56f701afe9be2ce

echo blake2('Hello world', 20);

5ad31b81fc4dde5554e36af1e884d83ff5b24eb0

echo blake2('Hello world', 20, 'foobar');

5b4bbc84b59ab5d9146089b143fd52f38638dcac

echo blake2s('');

Outputs : 69217a3079908094e11121d042354a7c1f55b6482ca1a51e1b250dfd1ed0eef9

echo b2sum('tests/sample.txt');

Outputs : a61b779ff667fbcc4775cbb02cd0763b9b5312fe6359a44a003f582ce6897c81a38a876122ce91dfec547d582fe269f6ea9bd291b60bccf95006dac10a4316f2

More Info

https://blake2.net/