這存儲在數據庫中。如何將此演示密碼發送給我的用戶?我不能將這個($ 2y $ 10 $ Zjk5YzQ4ZTlhMzNlNTUzMO3Wnm1FqXmAb6/4DmyptNGoEdWGLwls。)轉換爲普通文本。使用blowfish發送忘記密碼的電子郵件
有沒有解決方法?我也無法發送隨機密碼。
demo = $2y$10$Zjk5YzQ4ZTlhMzNlNTUzMO3Wnm1FqXmAb6/4DmyptNGoEdWGLwls.
這裏有一些功能我用密碼檢查和生成:
function password_encrypt($password) {
$hash_format = "$2y$10$"; // Tells PHP to use Blowfish with a "cost" of 10
$salt_length = 22; // Blowfish salts should be 22-characters or more
$salt = generate_salt($salt_length);
$format_and_salt = $hash_format . $salt;
$hash = crypt($password, $format_and_salt);
return $hash;
}
function generate_salt($length) {
// Not 100% unique, not 100% random, but good enough for a salt
// MD5 returns 32 characters
$unique_random_string = md5(uniqid(mt_rand(), true));
// Valid characters for a salt are [a-zA-Z0-9./]
$base64_string = base64_encode($unique_random_string);
// But not '+' which is valid in base64 encoding
$modified_base64_string = str_replace('+', '.', $base64_string);
// Truncate string to the correct length
$salt = substr($modified_base64_string, 0, $length);
return $salt;
}
function password_check($password, $existing_hash) {
// existing hash contains format and salt at start
$hash = crypt($password, $existing_hash);
if ($hash === $existing_hash) {
return true;
} else {
return false;
}
}
我沒有看到你問的實際問題。 「演示密碼」是什麼意思? –
如果用戶忘記了自己的密碼,那麼他們應該被髮送一個鏈接,其中包含一個隨機生成的令牌(限定時間和僅限一次使用),可用於獲取可以設置新密碼的表單。您不應該將散列的密碼發送給用戶。 – Quentin
但這是blowfish –