묻고답하기
passwd 방식이 암호를 md5 방식의 암호로 변경하는 방법
2013.07.12 23:36
제가 아는 상식 수준에선 아직 지식이 없어...혹시나 아시는분이 계실까해서 문의드려 봅니다.
password 방식의 비밀번호를 XE로 옮겨오면서 발생하는 문제네요.
기존에 password 방식의 암호를 복호화 해서 md5형식의 암호로 바꿀 수 있는 방법은 없을까요?
댓글 2
-
불패의초인
2013.07.13 01:37
-
똑디
2013.07.17 13:23
알려주신건 md5로 암호화 하는 방법이네요. 제가 요청한것과는 조금 달라서..^^ 아무튼 답변 감사해요. -
2-COIN
2013.07.13 01:39
제가 아는 수준에서는...
1. 해쉬로 저장된 결과를 간단히 복호화하는 것은 불가능합니다.
간단히 복호화가 가능하다면 애시당초 복호화해서 저장할 필요가 없습니다.
눈가리고 아옹하는 것밖에 안될테니까요.
"암호는 관리자도 알 수 없게 저장됩니다"는 바로 그런 의미일 겁니다.
(암호화=encryption 방식이라면 당연히 복호화 방법이 있을겁니다)
2. 제가 살펴본 바로는 hash된 암호를 이전하는 문제(복호화 안되는) 때문에
몇가지 장치를 한 것 같습니다.
제가 기본적인 것도 잘 모르는 상태라 그 구조는 잘 알지 못하겠으나...
아마도 member.model.php 에 관련된 함수가 있는 것 같습니다.
/**
* @brief Compare plain text password to the password saved in DB
*/
function isValidPassword($hashed_password, $password_text, $member_srl=null)
이 함수(isValidPassword)를 보시면 주된 if문이 5개 나오는데요.if(!$password_text) -> falseif($hashed_password == md5($password_text)) -> trueif(mysql_pre4_hash_password($password_text) == $hashed_password) -> trueif(substr(Context::getDBType(),0,5)=='mysql')if($oDB->isValidOldPassword($password_text, $hashed_password)) -> trueif($isSha1 && $hashed_password == md5(sha1(md5($password_text)))) -> true첫번째 것은 false 반환이고, 아래 4개는 true 반환입니다.즉... 현재 db에 저장된 해쉬 값이 키로 입력된 암호의 4가지 해쉬값중 하나와만 서로 맞으면 비번을 맞췄다고 인정해 주는 겁니다.차례대로 md5, mysql_pre4_hash_password, old_password(MYSQL), md5(sha1(md5()))말씀하신 password 방식의 암호가 위의 2번째 또는 3번째에 해당한다면db 변경 없이 그대로 복사해 넣어도 문제는 발생하지 않을 것이구요.만약 두가지에 해당하지 않는다면 위 두가지 방식과 마찬가지로키 입력한 암호를 password 방식으로 암호화한 값과 비교하는 비교문을 추가해서 사용하시면 될 것 같습니다.덧붙여서password 방식의 암호를 관리자 스스로 md5형식으로 일괄 바꿀 수 없다고 하면간접적으로 password 방식의 암호 사용자가 자신의 암호를 입력하여 로그인하거나 또는 비밀번호를 변경할 때return true; 앞에 입력한 비번을 md5로 db에 갱신시키는 코드를 한줄 추가하여 개별적으로 변경해 나갈 수는 있을 겁니다. -
똑디
2013.07.16 17:29
아...이런 엄청난 팁을 모르고 있었다니..현재 1.7.3.4버전을 사용중이고 DB 이전은 테크노트에서 하고 있습니다. 테크노트에서 사용된 암호값을 그대로 넣어봤는데 인증이 안되어서 그러는데 혹시 조언좀 부탁드려도 될까요? -
똑디
2013.07.17 13:24
해결되었습니다. ^^ 덕분에 고민거리가 하나 줄었네요. -
2-COIN
2013.07.18 19:17
의견을 지금 보았네요. 해결 되셨다니 다행입니다. ^^
http://hanulso.knu.ac.kr/laboratory/utils/md5test.php
이게 도움이 될까요 ??
원래는 파일을 가지고 있었는데
하도 오래되서 ㅠㅠ
네이버에 검색 : md5변환기