알고 있으면 좋지만 필요할 때 찾아서 쓰면 될 것들

노드는 운영체제 정보에도 접근할 수 있고 클라이언트가 요청한 주소에 대한 정보도 가져올 수 있다.

 

os

노드는 os 모듈에 정보가 담겨 있어 운영체제 정보를 가져올 수 있다.

 

os.cpus().length를 하면 코어의 개수가 숫자로 나온다.

cluster 모듈을 사용하면 코어 개수에 맞춰서 프로세스를 늘릴 수 있다.

 

path

폴더와 파일 경로를 쉽게 조작할 수 있도록 도와주는 모듈

운영체제별로 경로 구분자가 다르기 때문에 필요

 

윈도우 : C:\User\BBNO 처럼 \로 구분

POSIX : /home/BBNO 처럼 /로 구분

*POSIX는 맥과 리눅스와 같이 유닉스 기반의 운영체제들을 의미

 

path.sep : 경로의 구분자

path.delimiter : 환경 구분자 ( 윈도우 ; ) ( POSIX : )

path.parse : 파일 경로를 root, dir, base, ext, name으로 분리

path.parse()
{
	root: 'C:\\',
    dir: 'C:\\User\\BBNO',
    base: 'path.js',
    ext: 'js',
    name: 'path'
}

path.normalize : \나 /를 실수로 여러 번 사용했거나 혼용했을 때 정상적인 경로로 변환

path.join() :

path.resolve() :

/를 만나면 path.resolve는 절대 경로로 인식하여 앞의 경로를 무시하고, path.join은 상대 경로롤 처리한다.

path.join('/a','/b','c'); // 결과 : a/b/c/ 
path.resolve('/a','/b','c'); // 결과 : /b/c

 

\\를 사용할 때

\n은 줄바꿈이라는 뜻으로 C:\node와 같은 경우 오류가 발생할 수 있다.

따라서 C:\\node처럼 표시해야 한다.

 

상대 경로와 절대 경로

상대 경로 : 현재 경로(.) 상위 경로(..)

절대 경로 : C:\User\BBNO

 

url

 

url.parse(주소) : 주소를 분해합니다. WHATWG 방식과 비교하면 

url.format(객체) : WHATWG 장식

 

query

 

crypto

안호화를 도와주는 모듈

 

1. 단방향 암호화

비밀번호는 보통 단방향 암호화 알고리즘을 사용한다.

복호화 할 수 없는 암호화 방식으로 해시 함수라고 부르기도 한다.

 

사용자의 비밀번호는 복호화할 필요가 없기 때문에

암호화된 문자열로 저장하고 암호화한 데이터와 비교한다.

 

해시 기법

어떠한 문자열을 고정된 길이의 다른 문자열로 바꾸는 방식

 

const crypto = require('crypto');

console.log('base64:', crypto.createHash('sha512').update('비밀번호').digest('base64'));
console.log('hex: ',crypto.createHash('sha512').update('비밀번호').digest('hex'));
console.log('base64:', crypto.createHash('sha512').update('다른 비밀번호').digest('base64'));

createHash(알고리즘) : 사용할 해시 알고리즘. 현재는 sha512를 많이 사용한다. (md5, sha1은 취약해짐)

update(문자열) : 암호화할 문자열

digest(인코딩) : 인코딩할 알고리즘. base64가 가장 짧아서 애용됨

 

pbkdf2

10만번 sha512 변혼 반복

 

 

2. 양방향 암호화

암호화된 문자열을 복호화 할수 있으며, 키라는 것이 사용됨

const crypto = require('crypto');

const algorithm = 'aes-256-cbc';
const key = 'abcdefghijkl2nopqrstuvwxyz123456';
const iv = '0234567890123456';

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);

 

util

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

API가 추가되고 있으며, 중요도가 적은 것은 사라지기도 한다.

 

728x90

'Program > Server' 카테고리의 다른 글

[Photon] 서버 개요  (0) 2022.09.13
[NodeJS] http 모듈로 서버 만들기  (0) 2022.09.13
[NodeJS] Process  (0) 2022.09.13
[NodeJS] 이론  (0) 2022.09.06
멀티플레이어 게임 이론  (0) 2022.07.15

+ Recent posts