상세 컨텐츠

본문 제목

Node 내장 모듈 02

Node.json

by simstealer 2022. 9. 14. 09:58

본문

1. crypto

1-1. 단방향 암호화

기본 사용법

const crypto = require("crypto");
console.log("base64 : ", crypto.createHash("sha512").update("password").digest(base64));

○ createHash : 해시 알고리즘, (md5, sha256/512..)

○ update : 변환할 문자열

○ digest : 인코딩할 알고리즘 주로 가장 짧은 base64를 사용

pdkdf2 암호화

const crypto = require('crypto');

crypto.randomBytes(64, (err, buf) => {
  const salt = buf.toString('base64');
  console.log('salt:', salt);
  crypto.pbkdf2('비밀번호', salt, 100000, 64, 'sha512', (err, key) => {
    console.log('password:', key.toString('base64'));
  });
});

1-2. 양방향 암호화

const crypto = require('crypto');

const algorithm = 'aes-256-cbc';
const key = 'abcdefghijklmnopqrstuvwxyz123456';
const iv = '1234567890123456';

const cipher = crypto.createCipheriv(algorithm, key, iv);
let result = cipher.update('암호화할 문장', 'utf8', 'base64');
result += cipher.final('base64');
console.log('암호화:', result);

const decipher = crypto.createDecipheriv(algorithm, key, iv);
let result2 = decipher.update(result, 'base64', 'utf8');
result2 += decipher.final('utf8');
console.log('복호화:', result2);

○ crypto.createCipheriv(알고리즘, 키 iv) : aes-256-cbc...

○ cipher.update(문자열, 인코딩, 출력 인코딩) : 암호화할 대상, 대상의 인코딩, 출력 결과물에 대한 인코딩

○ cipher.final(출력 인코딩) : 출력 결과물을 넣으면 암호화가 완료된다

○ crypto.createDecipheriv(알고리즘, 키, iv) : 복호화 할때 사용

○ decipher.update(문자열, 인코딩, 출력 인코딩) : 복호화할 대상, 대상의 인코딩, 출력 결과물의 대한 인코딩

○ decipher.final(출력 인코딩) : 출력 결과물을 넣으면 복호화가 된다.

 

2. utill

- 각종 편의 기능을 모아둔 모듈

○ utill.deprecate() : 함수가 조만간 사라지거나 사용되지 않을때 사용하면 유용합니다. 첫번째 인수로 넣은 함수를 사용했을때, 경고 메시지가 출력되고 두번쨰 인수로 경고 메시지를 넣으면 됩니다.

○ utill.promisefy() : 콜백 패턴을 프로미스 패턴으로 바꿉니다.\

const util = require('util');
const crypto = require('crypto');

// Deprecate
const dontUseMe = util.deprecate((x, y) => 
{
  console.log(x + y);
}, 'dontUseMe 함수는 deprecated되었으니 더 이상 사용하지 마세요!');

dontUseMe(1, 2);

// Promisify
const randomBytesPromise = util.promisify(crypto.randomBytes);
randomBytesPromise(64)
  .then((buf) => 
  {
    console.log(buf.toString('base64'));
  })
  .catch((error) => 
  {
    console.error(error);
  });

'Node.json' 카테고리의 다른 글

파일 시스템 접근(fs)  (0) 2022.09.14
Node 내장 모듈 03  (0) 2022.09.14
Node 내장 모듈 01  (0) 2022.09.13
[JavaScript] process.nextTick  (0) 2022.09.13
[JavaScript] process.env / process.exit  (0) 2022.09.13

관련글 더보기

댓글 영역