PHP Salt密码加密

sco*_*org 0 php mysql hash md5 salt

我的客户忘记密码登录由拒绝提供帮助的其他开发人员开发的网站后端.因此,我去了SQL数据库,看看我是否可以直接从那里检索密码,但似乎密码是加密的.见下文

3a0606b25e75eb6c1fed61886844832e

如果我知道密码是如何加密的话会更容易,这样我就可以加密新密码并添加到SQL中但是当我查看代码时(在密码更改PHP gile中)有一些名为salt_pass的东西可以加密这个网站的密码.见下面的代码:

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$db = new database();
$option_uw = array(
    "table" => "users",
    "fields" => "password",
    "condition" => "id='{$_POST['id']}'"
);
$query_uw = $db->select($option_uw);
$rs_uw = $db->get($query_uw);
if ($rs_uw['password'] == trim(salt_pass($_POST['oldpassword']))) {
    $value_pw = array(
        "password" => trim(salt_pass($_POST['pass']))
    );
    $query_pw = $db->update("users", $value_pw, "id='{$_POST['id']}'");

    if ($query_pw == TRUE) {
        header("location:" . $baseUrl . "/back/user");
    }
}else{
    $_SESSION[_ss . 'msg_result'] = TRUE;
    header("location:" . $baseUrl . "/back/user/changepassword");
}
mysql_close();
}
Run Code Online (Sandbox Code Playgroud)

这是salt_pass功能

function salt_pass($pass) { 
     return md5("supapongherb.com" . $pass); 
}
Run Code Online (Sandbox Code Playgroud)

有人知道我如何根据此代码重新生成或加密新密码?

PS.该网站是用MVC编程开发的,我真的很有能力.如果您想查看更多文件,请与我们联系.

先感谢您!

Mac*_*ity 5

让我们清楚一些事情

但似乎密码是加密的

首先,密码是经过哈希处理的,而不是加密的.有区别.即哈希意味着单向.没有办法查看哈希,只是从中重新生成密码.

其次,他们正在使用MD5.它们实际上并没有腌制任何东西,它们会将相同的字符串附加到所有密码上,然后对它进行散列.MD5是一种糟糕的哈希方式,因为它很容易破解.这相当于用橡皮筋固定前门.它不安全,因为你可以一分钟做出数百万的猜测.是的,那很糟糕.

第三,在功能和"盐"已知的情况下,您可以通过这种方式轻松创建一个新密码(通过SQL,因为我不猜他们在那里使用什么样的棘手的ORM)

UPDATE users
SET password = MD5(CONCAT('supapongherb.com', 'new_password_here'))
WHERE id = their_user_id_here
Run Code Online (Sandbox Code Playgroud)

第四,切换到password_hash.像现在.摆脱橡皮筋并升级到一个锁舌,后面有狂热的斗牛犬,还有一只霰弹枪在你的腿上.