안녕하세요.
mysql 에서 비밀번호를 password() 함수로 해서 입력해놓았는데.
이번에 postgres에 회원을 이관작업하는데..
password()함수로 입력한 데이터는 postgres에서 어떻게 인증을 해야할지 ..난감합니다..
언어는 php로 핸들하구요..
아시는분 답변좀 부탁드립니다.^^
php를 쓰신다면 php의 crypt() 함수를 써보세요. 아마도 Mysql의 password나 php crypt()가 모두 system의 비밀번호 해슁하는 C 함수를 사용할 것 같네요. 뭐... 확실하거나 한 것은 아니고... 넘겨 집어봤습니다. MySQL을 쓰지 않기 때문에 확인해 볼 길이 없네요.
contrib/crypto 를 사용해보세요.
자세한 사용법은 crypto 안에 있는 메뉴얼 참조하시구요.
메소드로 암호화 복호화 가능하니까요.. mysql의 그것과
비슷할것입니다.(어쩌면..더 강력할수도.)
구버전(3.x) mysql의 password() 함수는 암호화 함수라기 보다는 해쉬에 가깝습니다. mysql소스를 보면 password() 함수의 이름이 스크램블 이라고 되어 있는데, 실제로 암호화 하는게 아니라 일정한 룰에 따라 문자열을 뭉개기만 합니다. 속도는 빠르지만 그만큼 사전식 공격에 무방비입니다.
http://www.postgresql.or.kr/wiki.php/nonun/Documents/contrib/pgcrypto
pgsql에서는 crypto를 사용하면 시스템의 암호화 함수를 사용할 수 있지만 지금의 문제는 기존에 32바이트로 암호화된 필드의 값을 사용해야 하는게 문제인 것이군요 -.-;;
mysql의 password()를 pgsql의 함수로 포팅하는 수 밖에는 없습니다. 아니면 mysql 암호화된 문자열을 실제 암호로 바꾸는 놈을 만들어서 실제 암호를 다시 암호화 해서 테이블을 만드는 수 밖에 없는데 이건 레코드가 몇만개만 되도 거의 불가능이라고 볼 수 밖에 없습니다.
mysql의 password()를 pgsql로 포팅해보세요~ 그리 오래 걸리지 않을 듯 합니다. 어쩌면 pl/pgsql로도 가능할 지 모릅니다 -.-;;; 힘드려나 =_=;