Node.js

[NodeJS] crypto를 이용한 단방향 암호화(해시 함수) 만들기

SongMinu 2021. 4. 24. 23:06
728x90

비밀번호 같은 데이터는 보통 단방향 암호화 알고리즘을 사용해서 암호화한다.

단방향 암호화란 암호화된 문자열을 다시 원래 문자로 복호화를 할 수 없는 암호화다.

다시 복호화할 수 없어서 해시 함수라고 부르기도 한다.

해시 함수에 대해선 minu0807.tistory.com/45

 

해시 함수 (hash function)

임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 함수. 소프트웨어의 성능과 보안을 책임지는 중요한 요소 중 하나이다. 해시 함수를 사용하면 데이터양이 많아져도 일괄된 성능을 보

minu0807.tistory.com

전문적으로 상세하게 작성한 글은 아니지만 해시함수에 대해 간략하게 작성은 해두었다. 

 

사용방법은 간단하다.

노드에서 제공하는 crypto를 가져와 쓰면 된다.

 

사용 방식은 

const crypto = require('crypto');

const a = crypto.createHash('알고리즘').update('변환할 문자열').digest('인코딩');

이렇게 사용하면 된다.

 

알고리즘엔 md5, sha1, sha256, sha512 등을 사용할 수 있고,

인코딩엔 base64, hex, latin1을 사용할 수 있다.

const crypto = require('crypto');

const pw = 'password';

const hash = {
  md5_base64 : crypto.createHash('md5').update(pw).digest('base64'),
  md5_hex : crypto.createHash('md5').update(pw).digest('hex'),
  
  sha256_base64 : crypto.createHash('sha256').update(pw).digest('base64'),
  sha256_hex : crypto.createHash('sha256').update(pw).digest('hex'),
  
  sha512_base64 : crypto.createHash('sha512').update(pw).digest('base64'),
  sha512_hex : crypto.createHash('sha512').update(pw).digest('hex')
  }

let key = Object.keys(hash);
for (key in hash) {
  console.log(`${key} \t : \t ${hash[key]}`);
}

위 소스에 대한 결과는 이렇다.

인코딩 방식은 base64나 hex를 쓰는 게 좋을 듯하고 실제로 base64가 해시값이 짧아서 많이 애용한다곤 한다.

 

 

반응형