crypto, util

기초/Node.js|2021. 9. 21. 22:29

crypto(단방향 암호화)

암호화(평문→암호)는 가능하지만 복호화(암호→평문)는 불가능하다. 

 

단방향 암호화는 대표적으로 해시 기법으로 진행된다.

= 문자열을 고정된 길이의 다른 문자열로 바꾸는 방식.

ex. 비밀번호가 kimdoodoo라고 했을 때, kimdoodoo를 해시화하면 언제나 rouie로 변경된다.

그리고 이 rouie라는 값만 서버가 기억하고, 사용자가 kimdoodoo를 입력했을 때 rouie로 변경된 값을 읽는 것.

→ 서버의 데이터가 털려도 복호화를 못하기 때문에 실제 데이터는 안전하다.

 

양방향 암호화

=대칭형 암호화, 암호문을 복호화할 수 있다.

key가 사용되며, 암호화할 때와 복호화할 때 같은 key를 사용해야 한다.

따라서.. key 관리가 매우 중요함.

 

 

util : 각종 편의 기능을 모아둔 모듈, deprecated와 promisify가 자주 쓰인다.

util - deprecated

어떤 코드를 만들었는데 차후에 해당 코드를 수정해야 할 경우, 

함부로 그 코드를 삭제할 경우 그 코드를 기존에 사용하던 사람들에게 영향을 준다.

→ 그 때, 해당 코드를 더 이상 사용할 수 없음을 알려 줄 때 deprecated를 사용한다.

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

const dontUseMe = util.deprecate((x, y) => {
  console.log(x + y);
}, "dontUseMe 함수는 deprecated되었으니 더 이상 사용하지 마세요.");
dontUseMe(1, 2);
//첫 번째 인자로 넣은 함수를 사용했을 때 경고 메시지가 출력된다.
//두 번째 인자로 경고 메시지 내용을 넣는다.

 

util - promisify

자바스크립트가 콜백 기반에서 프로미스 기반으로 많이 넘어가고 있는 상태.

옛날 함수들은 콜백으로 많이 구성되어 있고, 같은 이유로 완전히 없앨 수는 없다!

→ 이 때, 콜백을 프로미스로 바꿔주는 데 promisify를 사용한다.

단, 콜백이 (error, data) => {} 형식이어야 한다!

첫 번째 매개변수가 에러, 두 번째 매개변수가 데이터여야 한다. 그렇지 않으면 못바꿈~.~

노드에서는 모두 에러-데이터 형식이기 때문에 대체로 바꿀 수 있다.

반대로 프로미스를 콜백으로 바꾸는 함수도 있지만 거의 사용되지 않는다.

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

//바꿀 함수를 인자로 제공한다.
const randomBytesPromise = util.promisify(crypto.randomBytes);
randomBytesPromise(64)
  .then((buf) => {
    console.log(buf.toString("base64"));
  })
  .catch((error) => {
    console.log(error);
  });

참조 : 제로초(zerocho)님 인프런 강의

'기초 > Node.js' 카테고리의 다른 글

File System  (0) 2021.09.22
os와 path  (0) 2021.09.21
process  (0) 2021.09.13

댓글()