crypto, util
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 |