2014-01-29 7 views
0

나는 MD5와 소금 예를 들어소금 설정하고 새 암호

OÜ ª€ÉظÖÙõà;~\ 같은 계정 이름과 stackoverflow MD5와 소금에 절인 외모가 올바르게 수행되도록 암호를 사용하도록 노력하고 있어요,하지만 난 것으로 보이는 것을 얻고있다 그냥 md5, 그 같은 계정 이름과 비밀 번호를 소금에 절인. 나는 계정 이름의 MD5 해시를하고 그래서 jade0xea606b4cae6ae9a68a5da45d57c3309d처럼 보이지만 내가 정말 찾고 있어요 것은이 e 후 하나를 가지고 같이 내가 backticks에 그것을 닫을 수 없습니다

ê`kL®j馊]¤]WÃ0 

입니다.

다음은 예를 위해 사용하고있는 코드 스 니펫입니다.

$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);

은 내가

// 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); 
    } 
+0

MD5를 사용하는 경우 이미이 게임을 잃어 버렸습니다. MD5는 암호를 안전하게 해싱하는 데 적합하지 않습니다. – meagar

+0

개인 서버 용입니다. 게임에 누군가가 로그인하는 방법입니다. – tomirons

+0

해시 된 모든 암호 데이터베이스가 비공개이므로 해시를 저장하여 누군가 * 개인 서버에 침입하면 일반 텍스트 암호를 볼 수 없도록합니다. 서버를 "비공개"로 설정하는 것은 중요하지 않습니다. 암호 해시를 시도하고 MD5를 사용하고 있다면 잘못하고있는 것입니다. – meagar

답변

0

그래서, 당신은 문자열을 해시 할이 PDO 업데이트 기능과 같은 일을 beable 것이라고 생각하며 êkL®j馊]¤]WÃ0을 생산할 것인가?
MD5는 그렇게 할 수 없습니다. 항상 32자를 반환합니다 ..

다른 암호화 알고리즘을 사용하여 이와 같은 암호 문자열을 생성하십시오.

+0

원래 게시물을 편집했습니다. – tomirons

관련 문제