使用 MD5 和 CRYPT 的密码处理未按预期工作

Password handling with MD5 and CRYPT isn't working as expected

我想做的是不言自明的: 我得到一个 "username" 和一个用户设置的 "password",并尝试加密它。

这是我目前尝试过的方法:

//Firstly i recieve user and pswd
$usua=SQLite3::escapeString($_POST['usuario']);
$psw=SQLite3::escapeString($_POST['psw']);

//Then i proceed to encrypt
$key = md5('firstWord');
$salt = md5('secondWord');

function hashword($string,$salt){
    $string= crypt($string, '$'.$salt.'$');    
}

$psw = hashword($psw, $salt);

为什么这段代码总是 return 相同的结果:“$1$7b77d82”。

怎么了?

你会怎么做?

我应该使用 Bcrypt 吗?

显然,此过程应该 return 为每个使用的密码设置不同的值,但事实并非如此。

对于用户名和密码的基本加密,您可以这样做:

$usua=SQLite3::escapeString($_POST['usuario']);
$psw=SQLite3::escapeString($_POST['psw']);

$salt = "aString";

$encryptedUsr = crypt($usua, $salt);
$encryptedPsw = crypt($psw, $salt);

crypt(string $string, [string $salt]) 函数有两个参数:要加密的字符串和一个名为 $salt 的可选字符串,用于哈希。