在php上。我們如何使用md5加密方法?假設一個登錄表單。當我們想要一個加密的文本,我們使用
使用md5函數
$encryptedtxt=md5('text');
然後我們發送此$ encryptedtxt數據庫。現在,如果我們希望將$ encryptedtxt與用戶登錄的新輸入進行比較,我們應該怎麼做?如果我們應該從它的加密形式返回文本,怎麼樣? TNX。
在php上。我們如何使用md5加密方法?假設一個登錄表單。當我們想要一個加密的文本,我們使用
使用md5函數
$encryptedtxt=md5('text');
然後我們發送此$ encryptedtxt數據庫。現在,如果我們希望將$ encryptedtxt與用戶登錄的新輸入進行比較,我們應該怎麼做?如果我們應該從它的加密形式返回文本,怎麼樣? TNX。
MD5不再被認爲可以安全地用於密碼散列,它已經30歲了,被認爲是「破」的。
使用現代方法,包括準備好的陳述。
以下是你可以在閱讀了幾篇文章:
從ircmaxell的回答https://stackoverflow.com/a/29778421/
拉到只需使用一個圖書館。認真。他們的存在是有原因的。
password_hash()
password-compat
(兼容包上面自己不要去做。如果你正在創建自己的鹽,你做錯了。你應該使用一個庫來處理你的問題
$dbh = new PDO(...);
$username = $_POST["username"];
$email = $_POST["email"];
$password = $_POST["password"];
$hash = password_hash($password, PASSWORD_DEFAULT);
$stmt = $dbh->prepare("insert into users set username=?, email=?, password=?");
$stmt->execute([$username, $email, $hash]);
並會在登錄:
$sql = "SELECT * FROM users WHERE username = ?";
$stmt = $dbh->prepare($sql);
$result = $stmt->execute([$_POST['username']]);
$users = $result->fetchAll();
if (isset($users[0]) {
if (password_verify($_POST['password'], $users[0]->password) {
// valid login
} else {
// invalid password
}
} else {
// invalid username
}
或者你可以製造爲騙局:-) –
@Dagon肯定,但給了下面的其他答案,我不得不給他們一個「安全」的方法。 OP可以用它做他們想做的事;是否關閉問題。;-) –
哦,我們知道你只是想簡單的代表點:-) –
* 「?我們該怎麼辦」 * - 如果這是密碼,答案很簡單; **不要使用它**。它已經30歲了,不再安全使用了。另外,可以在網上找到「如何做」的內容。告訴我們你的嘗試。 –
Tnx! @ Fred-ii-是否還有其他方法可以保證密碼的安全性? – Sonoo
對於密碼存儲,請使用[** CRYPT_BLOWFISH **](http://security.stackexchange.com/q/36471)或PHP 5.5的['password_hash()'](http://www.php.net) /manual/en/function.password-hash.php)函數。對於PHP <5.5,使用['password_hash()兼容包]](https://github.com/ircmaxell/password_compat)。 –