mysql password sha1
컨텐츠 정보
- 25,082 조회
- 0 추천
- 목록
본문
MySQL 의 패스워드로 잠시 고민...
대부분의 설치형 보드에서 MySQL 의 PASSWORD() 함수를 써서 사용자의 패스워드를 저장한다.
문제는 접속 어플리케이션에서 날 패스워드를 날려 서버에서 비교하는 것은 말도 안된다는 것.
쌍방간에 인코딩을 적절히 하려면 먼저 MySQL이 패스워드를 저장하는지 알아야 할 것 아닌가...
일단 mysql 에서 패스워드가 어케 동작하는지 보자구.
mysql -u root -p
mysql> select password('mypass');
+-------------------------------------------+
| password('mypass') |
+-------------------------------------------+
| *6C8989366EAF75BB670AD8EA7A7FC1176A95CEF4 |
+-------------------------------------------+
1 row in set (0.00 sec)
40글자. 160비트다.
대충 인터넷을 뒤져보자.
MySQL 사이트.
http://dev.mysql.co...assword-hashing.html
여기에 달린 리플이 재미난다.
function mysql_41_password($in)
{
$p=sha1($in,true);
$p=sha1($p);
return "*".strtoupper($p);
}
오호~~ 단순히 SHA1을 두번 거친 놈이네.
진짜 그런지 테스트. (PHP)
<?php
$string = 'mypass';
printf("Original string: %s\n", $string);
printf("MD5 hash: %s\n", md5($string));
printf("SHA-1 hash: %s\n", sha1($string));
printf("MySQL Pass: %s\n", sha1(sha1($string, true)));
?>
결과는
Original string: mypass
MD5 hash: a029d0df84eb5549c641e04a9ef389e5
SHA-1 hash: e727d1464ae12436e899a726da5b2f11d8381b26
MySQL Pass: 6c8989366eaf75bb670ad8ea7a7fc1176a95cef4
대문자로 바꾸고 앞에 *만 붙이면 MySQL 의 패스워드 인코딩과 동일하다.
대부분의 설치형 보드에서 MySQL 의 PASSWORD() 함수를 써서 사용자의 패스워드를 저장한다.
문제는 접속 어플리케이션에서 날 패스워드를 날려 서버에서 비교하는 것은 말도 안된다는 것.
쌍방간에 인코딩을 적절히 하려면 먼저 MySQL이 패스워드를 저장하는지 알아야 할 것 아닌가...
일단 mysql 에서 패스워드가 어케 동작하는지 보자구.
mysql -u root -p
mysql> select password('mypass');
+-------------------------------------------+
| password('mypass') |
+-------------------------------------------+
| *6C8989366EAF75BB670AD8EA7A7FC1176A95CEF4 |
+-------------------------------------------+
1 row in set (0.00 sec)
40글자. 160비트다.
대충 인터넷을 뒤져보자.
MySQL 사이트.
http://dev.mysql.co...assword-hashing.html
여기에 달린 리플이 재미난다.
function mysql_41_password($in)
{
$p=sha1($in,true);
$p=sha1($p);
return "*".strtoupper($p);
}
오호~~ 단순히 SHA1을 두번 거친 놈이네.
진짜 그런지 테스트. (PHP)
<?php
$string = 'mypass';
printf("Original string: %s\n", $string);
printf("MD5 hash: %s\n", md5($string));
printf("SHA-1 hash: %s\n", sha1($string));
printf("MySQL Pass: %s\n", sha1(sha1($string, true)));
?>
결과는
Original string: mypass
MD5 hash: a029d0df84eb5549c641e04a9ef389e5
SHA-1 hash: e727d1464ae12436e899a726da5b2f11d8381b26
MySQL Pass: 6c8989366eaf75bb670ad8ea7a7fc1176a95cef4
대문자로 바꾸고 앞에 *만 붙이면 MySQL 의 패스워드 인코딩과 동일하다.
관련자료
-
링크
댓글 0
등록된 댓글이 없습니다.