My sql encode, decode, password로 암호화 하긔

Posted by 겨울에
2011. 9. 5. 09:07 scrap/ MySql
출처 : http://woodair.blog.me/100019460633
작성자 : 나무실

Mysql 패스워드 암호화 기법

mysql> INSERT INTO member_1 (id,passwd) VALUES ('id',encode('abcdefg','13579'))"; 

위에 encode('abcdefg','13579')중 passwd는 가입시 회원이 입력한 패스워드고 뒤에 '13579'는 암화호 시킬 코드 값입니다. 

그러니까 13579라는 값으로 회원이 입력한 패스워드를 우리가 알수 없는 값으로 암호화 시키는 것입니다. 

mysql> select decode(passwd,'13579') from member_1 WHERE id = '$id' and jumin = '$jumin; 

decode(passwd, '13579')는 우리가 알수 없는 암호값을 13579라는 암호 키값을 풀어 줍니다. 그러면 결과는 abcdefg라고 나옵니다.. 

결론은 다른 사람이 암화 키값인 13579라는 값을 모르면 암호를 볼수가 없다는 겁니다.. 이부분은 여러분이 각자의 실력으로 해결 하세요.. 

---------------------------------------------------------- 

위의 방법도 괜찮지만.. -_-; 

password() 함수를 써서 암호화를 하면 더욱 보안이 됩니다. 

mysql> INSERT INTO user_table (id, pwd) VALUES ('$id', PASSWORD('$pwd')); 

위와같이 입력하면 $pwd 부분이 암호화되어 DB 에 저장됩니다. 
물론... 길게~ 바뀌게 됩니다. (mysql reference 참고) 

mysql> SELECT * FROM user_table WHERE id = '$id' AND pwd = PASSWORD('$pwd'); 

이렇게 해서 회원 아이디와 비번을 비교할 수 있습니다. 

물론.. 회원아이디를 먼저 검사하고 비밀번호를 검사해두 되겠졈. 

password() 함수를 사용하게되면 위의 encode, decode 함수에서의 문제인 

키값의 노출로 인한 걱정을 안해두 되겠죠. 

단, 비밀번호를 분실했을때 본인조회후 비밀번호를 새로 입력받아야 하는 

문제가 있긴해여. 글치만.. 보안은 되져.. 헤~ 

질문이나 위에서 틀린점은 댓글 부탁해여~ 

 

추가

 

공개키 암호화 알고리즘이 적용된 암호화 기법이네요... 

┏다음은 암호화에 사용되는 SQL문입니다. 
┃ 
┃INSERT INTO Member 
┃(ID, Pass) 
┃VALUES 
┃('MyID', encode('MyPass','MyKey')) 
┃ 
┃encode() 함수가 암호화하는 일을 합니다. 
┗인수중 'MyPass'가 암호화할 문자열이고 'MyKey'가 함호화에 사용되는 키입니다. 


┏다음은 복호화에 사용되는 SQL문입니다. 
┃ 
┃SELECT 
┃decode(Pass,'MyKey') 
┃FROM Member 
┃WHERE ID = 'MyID' 
┃ 
┃decode()함수가 복호화하는 일을 합니다. 
┃암호화에 사용된 키를 인수로 주면 암호화되어 저장되었던 값이 
┗복호화되서 반환됩니다. 

사용자 정보에 민감한 사이트에서 사용하면 뛰어난 보안이 이루어지겠습니다. 
암호화에 사용되는 키는 세션ID와 같은 난수를 사용하면 좋을 것 같군요.

 

'scrap >  MySql' 카테고리의 다른 글

mysql SSL 암호화 통신하기  (0) 2011.09.05
MySQL인코딩 문제  (0) 2011.02.18
MySQL 암호화  (0) 2011.02.17
MySQL 기본.  (0) 2011.02.15