이것은 데이터베이스에 저장되어 있습니다. 이 데모 비밀번호를 내 사용자에게 보내려면 어떻게합니까? 나는 이것을 ($ 2y $ 10 $ Zjk5YzQ4ZTlhMzNlNTUzMO3Wnm1FqXmAb6/4DmyptNGoEdWGLwls.) 일반 텍스트로 변환 할 수 없다.송어를 사용하여 이메일을 잊어 버렸습니다.
해결책이 있습니까? 나는 또한 임의의 비밀 번호를 보낼 수 없습니다.
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
하지만 이것은 복어 –