기본 콘텐츠로 건너뛰기

라벨이 crypto인 게시물 표시

mysql password() function 을 node.js 에서 사용하려면

기존 mysql 로 다른 사람이 구축한 테이블의 데이터를 mongodb 로 이전하려고 보니 사용자 암호와 주민등록번호 뒷자리가 암호화 되어 있었다. stackoverflow 를 뒤져보니 http://stackoverflow.com/questions/5894193/implementation-of-mysqls-password-function-in-java 이런게 있더라. 단순하게 sha1 으로 두번 암호화하고 대문자화 한담에 맨 앞에 * 붙여주는게 전부인데 이상하게 잘 안되더라. 자바를 한동안 안봐서 그런가 눈알에 힘 빡주고 보니 두번 복호화 하는 과정에서 첫번째 복호화한 값은 byte[] 형이란게 보이더라 http://nodejs.org/api/crypto.html#crypto_hash_update_data_input_encoding node.js 에는 'sha1', 'md5', 'sha256', 'sha512' 와 같은 다양한 형태의 복호화 알고리즘을 지원하는 crypto package가 있다. 그래서 콘솔을 열고 이렇게 쳐 보았다. # node > var crypto = require('crypto'); > var first=crypto.createHash('sha1').update('test').digest(' binary '); > var second=crypto.createHash('sha1').update(first).digest(' hex '); > "*"+second.toUpperCase(); '*94BDCEBE19083CE2A1F959FD02F964C7AF4CFC29' mysql 에서 확인해보았다. > select password('test') *94BDCEBE19083CE2A1F959FD02...