[javascript] 문자열 암호화하기

자바스크립트를 사용하여 문자열을 암호화하는 방법을 알아보겠습니다.

1. CryptoJS를 이용한 암호화

CryptoJS는 암호화 관련 기능을 제공하는 라이브러리입니다. 이를 이용하여 문자열을 AES 또는 DES와 같은 대칭키 알고리즘으로 암호화할 수 있습니다.

먼저, CryptoJS를 설치합니다.

$ npm install crypto-js

다음은 예시 코드입니다.

const CryptoJS = require('crypto-js');

const plainText = '암호화할 문자열';
const secretKey = '비밀키';

// AES로 암호화
const encryptedText = CryptoJS.AES.encrypt(plainText, secretKey).toString();
console.log('암호화된 문자열:', encryptedText);

// AES로 복호화
const decryptedText = CryptoJS.AES.decrypt(encryptedText, secretKey).toString(CryptoJS.enc.Utf8);
console.log('복호화된 문자열:', decryptedText);

위 코드에서 plainText는 암호화할 대상 문자열을 의미하고, secretKey는 암호화에 사용될 비밀키입니다. CryptoJS.AES.encrypt() 메소드를 사용하여 문자열을 암호화하고, toString() 메소드를 통해 암호화된 문자열을 얻을 수 있습니다. 복호화는 CryptoJS.AES.decrypt() 메소드를 사용하여 수행하며, toString() 메소드의 인자로 CryptoJS.enc.Utf8을 전달하여 원래의 문자열을 얻을 수 있습니다.

2. Node.js 내장 모듈인 Crypto 사용하기

Node.js에는 암호화 기능을 제공하는 내장 모듈인 crypto가 있습니다. 이 모듈을 활용하여 문자열을 암호화할 수 있습니다.

const crypto = require('crypto');

const plainText = '암호화할 문자열';
const secretKey = '비밀키';

// AES로 암호화
const cipher = crypto.createCipher('aes-256-cbc', secretKey);
let encryptedText = cipher.update(plainText, 'utf8', 'hex');
encryptedText += cipher.final('hex');
console.log('암호화된 문자열:', encryptedText);

// AES로 복호화
const decipher = crypto.createDecipher('aes-256-cbc', secretKey);
let decryptedText = decipher.update(encryptedText, 'hex', 'utf8');
decryptedText += decipher.final('utf8');
console.log('복호화된 문자열:', decryptedText);

암호화하는 방식은 crypto.createCipher() 메소드를 사용하여 암호화 알고리즘과 비밀키를 설정한 후, update() 메소드와 final() 메소드를 차례로 호출하여 문자열을 암호화합니다. 복호화는 crypto.createDecipher() 메소드를 사용하며, 암호화된 문자열에 대해 update() 메소드와 final() 메소드를 호출하여 원래의 문자열을 얻을 수 있습니다.

결론

이제 자바스크립트를 사용하여 문자열을 암호화하는 방법을 알게되었습니다. 암호화된 문자열은 보안성이 향상되므로, 중요한 정보를 다루는 경우 암호화를 고려하는 것이 좋습니다. CryptoJS와 Node.js의 crypto 모듈은 간편하게 암호화를 수행할 수 있는 도구입니다.

(참고 문서: CryptoJS 공식 문서Node.js 공식 문서)