[英]PHP Salt password encryption
我的客戶忘記了登錄由其他拒絕提供幫助的開發人員開發的網站后端的密碼。 因此,我去了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();
}
這是salt_pass
函數
function salt_pass($pass) {
return md5("supapongherb.com" . $pass);
}
有人知道如何根據此代碼重新生成或加密新密碼嗎?
PS。 該網站是使用MVC編程開發的,我確實能夠做到。 如果您想查看更多文件,請告訴我。
先感謝您!
讓我們澄清一些事情
但似乎密碼已加密
首先,您的密碼是散列的 ,而不是加密的。 有區別 。 也就是說,散列是單向的。 無法查看哈希值並僅從中重新生成密碼。
其次,他們正在使用MD5。 他們實際上並沒有加鹽,而是將相同的字符串附加到所有密碼中,然后對其進行哈希處理。 MD5是一種糟糕的散列方法,因為它很容易破解 。 這等效於用橡皮筋固定前門。 這是不安全的,因為您每分鍾可以做出數百萬個猜測 。 是的,那很糟糕。
第三,借助已知的功能和“鹽”,您可以輕松地以這種方式創建新密碼(通過SQL,因為我不知道他們在那里使用的是哪種螺絲釘的ORM)
UPDATE users
SET password = MD5(CONCAT('supapongherb.com', 'new_password_here'))
WHERE id = their_user_id_here
第四,切換到password_hash 。 像現在。 擺脫橡皮筋,升級為固定螺栓,背后放滿狂暴的小子,腿上a彈槍。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.