[질문]회원가입DB에서 암호화 문제에 따른 패스워드의 로그인...
글쓴이: kimyh / 작성시간: 화, 2007/01/16 - 6:03오전
리눅스 9.0서버에 C로 작성한 소켓프로그램과 데이터베이스 콘트롤 프로그램을 올리고
클라이언트에는 리눅스 계열(C로 작성)과 윈도우(vc++6.0으로 작성) 계열의 소켓프로그램으로 회원 가입 db를 아이디와 패스워드를 통하여 로그인 하는 프로그램을 구현 하고 있습니다.
그런데 서버측에서 패스워드를 암호화 처리를 해서 db에 저장을 해서 그런지 클라이언트에서 전송한
패스워드를 서버에서 인식을 못 하는군요.
실제로 서버의 콘솔에서 직접 mysql db에 들어가 암호화 되지 않은 패스워드로 select문을 쿼리해보니 않되더군요. 그러나 암호화된것을 패스워드로 쿼리를 하면 잘 되고요.
이럴경우 서버측에 있는 db 콘트롤 프로그램에 무슨 특별한 조치를 해 주어야 한가요.
암호화 복호화는 특별히 다뤄 본적도 없어 무척 당황 스럽군요.
서버측의 회원가입db를 콘트롤하는 프로그램에 패스워드를 암호화 해서 쿼리하는 프로세스를
추가 해야 한다면 암호화에 관련한 함수나 사용법좀 알려 주시면 감사하겠습니다.
Forums:
리눅스 9.0 -> 레드햇
리눅스 9.0 -> 레드햇 리눅스 9.0
php 의 crypt() 함수로 암호를 검증하는 방법이나,
mysql 의 PASSWORD() 함수로 암호를 검증하는 방법을 찾아보세요.
emerge money
https://xenosi.de/
보통 패스워드는 해쉬방식아닌가요.
일단 먼저 DB에 저장된 패스워드가 무슨 알고리즘으로 암호화 되었는지 물어보세요.
보통 패스워드를 DB에 저장할 때 hash 방식을 씁니다. MD5, SHA-1 등등
만약 해쉬방식이라면 복호화는 당연히 안될거고요,
(왜냐하면 패스워드는 복호화 가능하게 한다면 보안상 위험하겠지요.)
client가 보낸 암호화 되지않은 패스워드 를 서버에 보내주고 서버에서는
client의 패스워드와 DB의 해쉬된 패스워드가 일치하는지 검증해 주는 function 을
만들면 될 듯 합니다.
해쉬(client 패스워드 평문) == (DB의 해쉬된 패스워드)
이런 로직이겠죠.
c로 짜여진 md5 해쉬 소스들은 쉽게 구하실 수 있을듯요.
저도 md5로 암호화
저도 md5로 암호화 되었을 것이라고 짐작이 되네요.
간단하게 시험해보시려면
$ md5
비밀번호^D^D
요렇게 해보시면 해쉬값을 알 수 있습니다. Ctrl-D는 두번 연속 눌러야 합니다. 엔터를 치고 나서 바로 ^D를 입력하면 한번으로 되지만 이렇게 하면 뉴라인 문자가 포함되버려서 해쉬값이 틀려지더군요.
이렇게 구한 걸로 일단 DB에 쿼리를 해보셔서 md5로 된것이 맞는지 확인해 보시면 될 것 같습니다.
--
마잇
--
마잇
댓글 달기