2017-01-27 19:41:02 +00:00
|
|
|
#!/usr/bin/php
|
|
|
|
|
|
|
|
<?php
|
|
|
|
|
2017-01-30 09:39:45 +00:00
|
|
|
require_once __DIR__.'/../../include/php/const';
|
2017-01-27 19:41:02 +00:00
|
|
|
|
|
|
|
|
|
|
|
function cyclichash_hash(){
|
|
|
|
|
|
|
|
/* [1] Fetch necessary data
|
|
|
|
=========================================================*/
|
|
|
|
/* (1) Fetch secret file */
|
|
|
|
$secret = @file_get_contents(SECRET_CONF);
|
|
|
|
|
|
|
|
/* (2) Check secret file format */
|
2017-01-28 17:58:49 +00:00
|
|
|
if( !is_string($secret) || !preg_match("/^(.{".SECRET_SIZE."}):(\d+):.{".SECRET_SIZE."}$/", $secret, $match) )
|
2017-01-27 19:41:02 +00:00
|
|
|
return 127;
|
|
|
|
|
|
|
|
/* (3) Extract data for hashing from @secret */
|
|
|
|
$key = (string) $match[1];
|
|
|
|
$depth = (int) $match[2];
|
|
|
|
|
|
|
|
|
|
|
|
/* [2] Hash data
|
|
|
|
=========================================================*/
|
|
|
|
/* (1) Initialize with data */
|
|
|
|
$hash = $key;
|
|
|
|
|
|
|
|
/* (2) Hash @depth times */
|
|
|
|
for( $d = 0 ; $d < $depth ; $d++ )
|
|
|
|
$hash = hash('sha512', $hash);
|
|
|
|
|
|
|
|
|
|
|
|
slog("Returning hash with $depth depth", 'cyclic-hash:hash');
|
|
|
|
return $hash;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
echo cyclichash_hash();
|
|
|
|
?>
|
|
|
|
|