Php Salt并设置新密码
我尝试使用md5和salt密码,例如帐户名和Php Salt并设置新密码,php,Php,我尝试使用md5和salt密码,例如帐户名和stackoverflowmd5和salt看起来像 OÜ呲Ùõa~\当它正确完成时,但我得到的看起来只是md5,就像它没有添加帐户名和密码一样。因此,当我对帐户名和jade进行md5哈希时,它看起来像0xea606b4cae6ae9a68a5da45d57c309d,但我真正想要的是 ê`kL®j馊]¤]WÃ0 我无法在backticks中关闭它,因为它在e后面有一个 下面是我正在使用的代码片段作为示例 $new = isset($_PO
stackoverflow
md5和salt看起来像
OÜ呲Ùõa~\代码>当它正确完成时,但我得到的看起来只是md5,就像它没有添加帐户名和密码一样。因此,当我对帐户名和jade
进行md5哈希时,它看起来像0xea606b4cae6ae9a68a5da45d57c309d
,但我真正想要的是
ê`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;
}
我确实有一个脚本,可以运行并返回我正在查找的内容,但它使用数据库中的以下过程,因此我必须执行调用changepasswd(“$Login”,“$Salt)
我确实注意到,$Salt
不在'single quotes'
的范围内,有没有办法用下面的代码片段做到这一点
$arr=array(“:idnumber”=>$new,:passwd”=>$Salt)代码>
我想我可以用这个PDO更新函数做同样的事情
// 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);
}
因此,您想要散列一个字符串,它将生成êkL®jéalphaŠ]·WÃ0
?
MD5不能这样做,它总是返回32个字符
使用另一种加密算法生成这样的密码字符串。如果您使用的是MD5,那么您已经输掉了这场游戏。MD5不适用于安全地散列密码。它适用于私有服务器,这是游戏登录某人的方式。所有散列密码数据库都是私有的,您存储散列,以便当有人闯入您的私有服务器时,他们看不到纯文本密码。不管你的服务器有多“私密性”,如果你试图散列密码并且使用MD5,那么你是做错了。你不理解我,这是为了一个需要用MD5散列和盐析的游戏。所以这是为了其他人的游戏(在这种情况下,他们强制使用MD5?),而不是你自己的游戏?
// 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);
}