Base64 text // verify: text + saved hash -> true/false function myhash($alg, $pw, $opt) { if(array_key_exists('salt', $opt)) { $saltlen = $opt['salt']; $opt['salt'] = gen_salt($saltlen); } return password_hash($pw, $alg, $opt); } function verify($pw, $savedhash) { return password_verify($pw, $savedhash); } // test define('PW', 'A super secret password'); function test($label, $alg, $opt) { echo $label . ":\r\n"; $hashval = myhash($alg, PW, $opt); echo ' ' . $hashval . "\r\n"; $ok = verify(PW, $hashval); echo ' ' . ($ok ? 'True' : 'False') . "\r\n"; $ok2 = verify(PW + 'X', $hashval); echo ' ' . ($ok2 ? 'True' : 'False') . "\r\n"; } test('BCrypt', PASSWORD_BCRYPT, array('cost' => 15, 'salt' => 32)); //test('Argon2i', PASSWORD_ARGON2I, array()); // require PHP 7.2+ ?>