본문 바로가기
STUDY/NodeJS

Session secret key 생성하기 - crypto 모듈

by Y.Choi 2023. 12. 8.
728x90
반응형

 

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 파일과 같은 방법으로 관리하는 것이 일반적이다.

 

 

728x90
반응형