반응형
오늘은 Node.js에서 제공하는 crypto 모듈을 사용하여 데이터 보안을 강화하는 방법에 대해 알아보겠습니다.
crypto 모듈은 암호화, 해시, 서명 등 다양한 보안 기능을 제공하여 애플리케이션의 데이터를 안전하게 처리할 수 있도록 도와줍니다.
1. Crypto 모듈 소개
crypto 모듈은 NodeJS의 기본 모듈 중 하나로, 다양한 암호화와 해시 함수를 포함하고 있습니다.
주로 데이터를 안전하게 처리하기 위해 사용됩니다.
주요 기능으로는 데이터 암호화/복호화, 해시 생성, HMAC(Hash-based Message Authentication Code)생성, 서명 및 검증 등이 있습니다.
2. 데이터 암호화와 복호화
데이터를 암호화하고 복호화하는 예제
대칭키 암호화 방식중 하나인 AES를 사용하여 데이터를 암호화하고 복호화하는 방법입니다.
const crypto = require('crypto');
const secretKey = crypto.randomBytes(32); // 256-bit secret key
const iv = crypto.randomBytes(16); // Initialization Vector
const dataToEncrypt = '암호화할 데이터입니다.';
// 암호화
const cipher = crypto.createCipheriv('aes-256-cbc', secretKey, iv);
let encryptedData = cipher.update(dataToEncrypt, 'utf-8', 'hex');
encryptedData += cipher.final('hex');
console.log('암호화된 데이터:', encryptedData);
// 복호화
const decipher = crypto.createDecipheriv('aes-256-cbc', secretKey, iv);
let decryptedData = decipher.update(encryptedData, 'hex', 'utf-8');
decryptedData += decipher.final('utf-8');
console.log('복호화된 데이터:', decryptedData);
3. 해시 생성
해시 함수를 사용하여 데이터를 고정된 길이의 해시 값으로 변환할 수 있습니다.
SHA-256해시 함수를 사용하여 문자열을 해시하는 방법입니다.
const crypto = require('crypto');
const dataToHash = '해시할 데이터입니다.';
const hash = crypto.createHash('sha256').update(dataToHash).digest('hex');
console.log('해시 값:', hash);
위와 같이 생성된 해시 값은 데이터의 무결성을 검증하거나, 패스워드를 안전하게 저장하기 위해 사용됩니다.
반응형
'Node.JS' 카테고리의 다른 글
[NEST] NestJS Excel Parser 엑셀파일 원하는 형태로 만들기 (0) | 2023.07.24 |
---|---|
[Nest] Slack Webhook (0) | 2023.06.05 |
@nestjs/config 사용법 (0) | 2023.02.16 |
TypeORM queryRunner를 이용한 트랜잭션 제어 (0) | 2023.02.15 |
NestJS TypeORM을 사용해보자 (0) | 2023.02.14 |
댓글