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);
});
파일 시스템 접근(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 |
댓글 영역