关于php:加密后如何确认密码

How to confirm password after encryption

因此,我成功地加密了用户密码,并将其发送到数据库等。我只是想知道如何进行解密或其他方法,以检查用户输入是否与db密码匹配。每次处理哈希时,都会创建一个不同的加密密码。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<form method="post" action="">
<input type="text" name="user" id="user">
<input type="password" name="pass" id="pass">
<input type="submit" name="submit">
</form>

<?php
session_start();

require_once("connection.php");
require_once("passEncrypt.php");

if(isset($_POST["submit"])) {

$user = $_POST["user"];
$password = $_POST["pass"];

$pass = encrypt($password);

echo $pass;

}

?>

    <?php

function encrypt($pass){
// use blowfish algorithm 10 times
$hash_format="$2a$10$";
$salt_length=22;
$salt=generate_salt($salt_length);
// store this in DB
$format_and_salt=$hash_format . $salt ;
$hash = crypt($pass, $format_and_salt);
return $hash;
}

function generate_salt($length){
// return 32 character random string
$unique_string = md5(uniqid(mt_rand(), true));
// provides valid characters
$base64_string = base64_encode($unique_string);
// replaces + with .
$mod_base64_string = str_replace('+', '.', $base64_string );
// make string correct length
$salt=substr($mod_base64_string, 0, $length);
return $salt;
}
?>

我意识到数据没有被清理或者PHP安全等。在我将代码实现到实际页面之前,我只是想了解如何做到这一点。


(P)第一:这不是插头。电解是可逆的(p)(P)I would not use this code at all:(p)布尔奇1(P)Instead,use the password hashing api.我不想再重塑这里了(p)字母名称布尔奇1(P)不要使用菲律宾比索4。如果你做,你是全部在你自己。(p)