crypto 모듈은 Node.js에서 제공하는 암호화와 관련된 다양한 기능을 수행하는 모듈이다. 이 모듈을 사용해 해시생성, 암호화, 복호화, 서명 생성 등 다양한 암호와 작업을 할 수 있다.
https://nodejs.org/api/crypto.html
crypto 모듈의 기능이 많지만 그 중에 사용자 인증을 위해 사용되는 Session의 secret key를 생성하는 무작위 문자열 생성 하는 방법을 알아본다.
Session secret key 생성하는 두 가지 방법
1) 16진수 문자열로 생성
const crypto = require('crypto');
// 무작위 문자열 생성 함수
const generateRandomString = (length) => {
return crypto.randomBytes(length).toString('hex');
};
// 세션 시크릿 키 생성
const sessionSecretKey = generateRandomString(32);
console.log('Session Secret Key:', sessionSecretKey);
crypto.randomBytes(length)는 지정된 길이의 무작위 바이트를 생성하고, toString('hex')는 그 바이트를 16진수 문자열로 변환한다. 위 코드에서는 32바이트의 무작위 16진수 문자열이 생성된다.
16진수 : 0부터 9까지 숫자와 A부터 F까지 알파벳을 사용해 숫자를 표현하는 방법.
하나의 16진수 숫자는 4비트를 나타내고 두 개의 16진수 숫자는 1바이트를 나타낸다.(예: 1A = 1바이트)
2) base64 인코딩된 문자열로 생성
const crypto = require('crypto');
// 세션 시크릿 키 생성 함수
function generateSessionSecret() {
const secretBytes = crypto.randomBytes(32); // 32바이트 랜덤 데이터 생성
const sessionSecret = secretBytes.toString('base64'); // base64로 인코딩
return sessionSecret;
}
// 생성된 세션 시크릿 키 출력
const sessionSecret = generateSessionSecret();
console.log('Generated Session Secret:', sessionSecret);
toString('base64')를 사용하여 32바이트의 무작위 데이터를 base64로 인코딩한 문자열을 생성한다.
Base64 : 이진 데이터를 텍스트 형식으로 인코딩하는 방법 중 하나이다.
64개의 문자로 이루어져 있고 영문 대소문자, 숫자, + 및 / 기호로 구성된다.
세션 시크릿 키는 애플리케이션의 보안을 위해 외부에 노출되지 않도록 주의해야 한다. 주로 환경 변수에 저장하여 사용하거나, .env 파일과 같은 방법으로 관리하는 것이 일반적이다.
'STUDY > NodeJS' 카테고리의 다른 글
[3-4] 파일 및 디렉터리 경로 관리를 위한 path모듈 (0) | 2024.01.07 |
---|---|
[7-2] 비밀번호 해싱 및 검증 라이브러리 - bcrypt (0) | 2023.12.13 |
[4-2-3] morgan 미들웨어 로그 포맷 사용자 정의하기 (0) | 2023.03.28 |
[4-2] HTTP 요청에 대한 정보를 로그로 출력해주는 미들웨어 - Morgan (0) | 2023.03.28 |
[1-2] Node.js 패키지 관리도구 - npm (0) | 2023.03.27 |