パスワードハッシュ

このコミットが含まれているのは:
守矢諏訪子 2022-03-30 19:13:22 +09:00
コミット 5e8c327896
4個のファイルの変更54行の追加0行の削除

ファイルの表示

@ -13,4 +13,7 @@
// CURL
define('API_URI', '');
define('API_AUTH', null);
// ハッシュ
define('PASSWD_PEPPER', ''); // オススメpwgen -ycnB1 40
?>

ファイルの表示

@ -1,2 +1,31 @@
<?php
require_once('../config.php');
function tokengen (int $bytes=24): string {
return bin2hex(random_bytes($bytes));
}
function setpasswd (string $password): string {
$millisec = 0.05;
$cost = 8;
do {
$cost++;
$start = microtime(true);
password_hash('kero', PASSWORD_ARGON2ID, ['cost' => $cost]);
$end = microtime(true);
} while (($end - $start) < $millisec);
$addpepper = hash_hmac('sha256', $password, PASSWD_PEPPER);
$addmd5 = md5($addpepper);
return password_hash($addmd5, PASSWORD_ARGON2ID, ['cost' => $cost]);
}
function verifypasswd (string $raw, string $crypt): bool {
$addpepper = hash_hmac('sha256', $raw, PASSWD_PEPPER);
$addmd5 = md5($addpepper);
return password_verify($addmd5, $crypt);
}
?>

9
src/hash/index.php ノーマルファイル
ファイルの表示

@ -0,0 +1,9 @@
<?php
$title = 'パスワード創作';
$siteurl .= '/hash';
$childview = '../ui/hash/index.php';
if (isset($_POST['password'])) {
$setpasswd = setpasswd($_POST['password']);
}
?>

13
ui/hash/index.php ノーマルファイル
ファイルの表示

@ -0,0 +1,13 @@
「mysecurepassword」をお入り下さい。<br />
Please enter "mysecurepassword".<br />
<form method="POST" action="/hash">
<input type="password" name="password" />
<input type="submit" value="送信" />
</form>
<?php
if (isset($_POST['password'])) {
echo '創作したパスワード(plaintext→sha256+pepper→md5→Argon2id) '.$setpasswd.'<br />';
echo 'ポスワードは「mysecurepassword」ですか?'.(verifypasswd('mysecurepassword', $setpasswd) ? 'はい' : 'いいえ');
}
?>