사이트 내 전체검색
[함수] 단방향 암호화는 crypt() !!!!!
로빈아빠
https://cmd.kr/server/969 URL이 복사되었습니다.

본문

md5() 를 그냥 쓰면 아무리 복잡하게 해도 1:1 대응이 됩니다. 
crypt() 를 아래와 같이 사용하면 1:1 대응이 안됩니다. 
생성시 마다 다른 해시값이 만들어집니다. 

http://kr.php.net/manual/kr/function.crypt.php 

Example #1 crypt() 예제 
<?php 
$password = crypt('mypassword'); // salt 자동 생성 

/* 패스워드를 비교할 때, 다른 해싱 알고리즘을 사용하는 문제를 
  피하기 위해서, crypt()가 생성한 전체 결과를 salt로 주어야 
  합니다. (위에서 밝혔듯이, 표준 DES 기반 암호 해싱은 2 문자 
  salt를 사용하지만, MD5 기반 해싱은 12 문자를 사용합니다) */ 
if (crypt($user_input, $password) == $password) { 
  echo "패스워드 확인!"; 

?> 


ps. 비밀번호 처럼 '검색' 이 필요하지 않은 곳에만 사용할 수 밖에 없겠죠. 
검색이 요구되는 주민번호 같은 것은 어쩔 수 없이 1:1 매칭되는 암호화 알고리즘을 사용하거나, 
복호화가 되는 암호화 알고리즘을 쓸 수 밖에요. 


- MySQL - 
만들기 
select encrypt('비밀번호', concat('$1$', md5(unix_timestamp()))); 

비교하기 
select encrypt('비밀번호', '암호화된 비밀번호') = '암호화된 비밀번호' 



- PostgreSQL - 
http://www.postgresql.org/docs/8.3/static/pgcrypto.html 
만들기 
select crypt('비밀번호', gen_salt('md5')); 



License : Just do it!

댓글목록

등록된 댓글이 없습니다.

1,139 (5/23P)

Search

Copyright © Cmd 명령어 3.133.153.167