Я пытаюсь использовать md5 и соль пароль так, например, имя учетной записи и stackoverflow
md5 и соленого выглядит какСоль и установить новый пароль
OÜ ª€ÉظÖÙõà;~\
, когда это сделано правильно, но я получаю то, что выглядит просто md5, как будто он не засовывает имя учетной записи и пароль. Так что, когда я делаю md5 хэш имени учетной записи и jade
это выглядит как 0xea606b4cae6ae9a68a5da45d57c3309d
, но то, что я действительно искал является
ê`kL®j馊]¤]WÃ0
Я не мог закрыть, что в backticks
, как он есть после e
.
Вот фрагмент кода, который я использую для примера.
$new = isset($_POST['new']) ? $_POST['new'] : '';
$old = isset($_POST['old']) ? $_POST['old'] : '';
$con = isset($_POST['con']) ? $_POST['con'] : '';
$this->view->usr = mysql_real_escape_string(StrToLower(Trim($this->view->usr)));
$new = mysql_real_escape_string(StrToLower(Trim($new)));
$Salt = $this->view->name.$new;
$Salt = md5($Salt);
$Salt = "0x".$Salt; //Salts the password in md5.
//$this->view->salt = $this->view->name.$new;
//$this->view->salt = md5($this->view->salt);
//$this->view->salt = "0x".$this->view->salt; //Salts the password in md5.
$this->view->msg = "";
$this->view->err = false;
if($old != $this->view->pss){
$this->view->msg = "Old Password is Incorrect";
}elseif($new == ""){
$this->view->msg = "New Password is Empty";
}elseif($con != $new){
$this->view->msg = "Please Confirm Password Correctly";
}else{
$arr = array(":idnumber" => $new, ":passwd" => $Salt);
$this->database->DBSet($arr,'users',$whr = 'WHERE ID = '.$this->view->usr);
$this->view->msg = "Password is Successfully Changed";
$this->view->err = true;
}
У меня есть скрипт, который работает и возвращает то, что я ищу, но он использует следующую процедуру из базы данных, так что я должен сделать call changepasswd('$Login', $Salt)
BEGIN
START TRANSACTION;
UPDATE users SET passwd = passwd1 WHERE name = name1;
COMMIT;
END
Я сделал уведомление что $Salt
находится за пределами 'single quotes'
, есть ли способ сделать это со следующим фрагментом?
$arr = array(":idnumber" => $new, ":passwd" => $Salt);
Я думал, что beable делать то же самое с этим PDO функции Update
// Update
function DBSet($arr,$tbl,$whr = ''){
$stmt = array();
foreach($arr as $fld => $val){
$stmt[] = str_replace(":","",$fld)." = ".$fld;
}
$stm = implode(",",$stmt);
$sql = self::UPDATE.$tbl." SET ".$stm.' '.$whr;
$sth = $this->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));
$sth->execute($arr);
}
Если вы используете MD5, вы уже проиграли эту игру. MD5 не подходит для надежного хеширования паролей. – meagar
Это для частного сервера, вот как игра регистрирует кого-то. – tomirons
Все хэшированные парольные базы данных являются частными, вы храните хэш, так что когда кто-то * ломается на * ваш частный сервер, они не могут видеть пароли с открытым текстом. Неважно, как «частный» ваш сервер, если вы пытаетесь использовать хэш-пароли и используете MD5, вы делаете это неправильно. – meagar