CI 묻고 답하기

제목 암호화된 password비교문제
글쓴이 이그니 작성시각 2014/07/30 11:21:59
댓글 : 3 추천 : 0 스크랩 : 0 조회수 : 15720   RSS
모든 파일은 로드 다했구요 a컨트롤러 b컨트롤러 암호화하는소스는 동일합니다.
a컨트롤러에서 
$mb['wr_password'] = $this->encrypt->encode($this->input->post('wr_password'));  
식으로 암호화를햇구요

b컨트롤러에서 다음과같이 저장된암호와 입력암호가 맞는지 비교를하면

if (md5($this->input->post('password')) != $this->encrypt->decode($write['wr_password']))
alert("비밀번호가 맞지 않습니다.");    

비밀번호가 맞지않다고나옵니다...

b컨트롤러에서 a컨트롤러와 동일한소스로 암호화 한후 비교시에는 비밀번호가 맞아서 다음페이지로넘어가는데

혹시어떤문제일까요??

b컨트롤러에서 암호화된비밀번호와 입력비밀번호를 비교하려면 꼭 b컨트롤러에서 암호화를 해야하나요?
 다음글 세션쿠키 파일이 생성되지 않는 문제 해결했습니다. (2)
 이전글 서로다른 포트에 따른 세션 (1)

댓글

변종원(웅파) / 2014/07/30 11:59:36 / 추천 0
encode, decode 의 의미를 다시 한번 생각해보심이....

암호화 해제했으면 비밀번호 원본과 비교를 해야죠. md5 해버리면 달라지죠.

그리고 비밀번호는 복호화하는 방식 비추입니다.

가입시 post로 받은걸 단방향 암호화해서 넣고 로그인할 때 비교는

암호화된 db의 패스워드 = 암호화(전송된 패스워드) 입니다.
인스카 / 2014/07/30 17:48:48 / 추천 0
첨언하자면... password는 단방향 해쉬로[만] 저장해야 합니다... encode/decode를 하면 눈에는 다르게 보이지만 암호화라고 할 수 없습니다. 웅파님 댓글과 같이, 로그인 시 입력받은 암호를 같은 알고리즘으로 암호화 한 뒤, 이 값과 DB에 저장된 값을 비교해야 합니다.
온더탑 / 2014/07/31 17:47:21 / 추천 0
$u_pw = $this->input->post('u_pw');
$u_pw = $this->encrypt->sha1($u_pw);
DB에 값 저장
이후도 마찬가지로 암호화된 값으로만 비교가 아닐까요