[Node.js] crypto-js 패키지 사용해보기

STEVELOPER·2023년 1월 31일
0

Node.js

목록 보기
6/9

로그인 기능을 구현하다 보니 암호화 복호화 기능을 사용하게 되었다.
기존에는 기본적으로 제공하는 crypto 모듈을 사용했던 기억이 있는데
검색해보니 crypto-js 라는 npm package 가 있었고 description 을 보니 상당히 간단해 보였기에 사용해보았다.

npm install crypto-js
#ts
npm install crypto-js
npm install --save-dev @types/crypto-js
import CryptoJS from "crypto-js";
export const encrypt = (payload: string) => {
  try {
    const secret_key = process.env.CRYPTO_SECRET_KEY;
    if (!secret_key) {
      console.log("No Secret Key.");
      return null;
    }
    const encrypted = CryptoJS.AES.encrypt(payload, secret_key).toString();
    return encrypted;
  } catch (e) {
    console.log("Encryption error occur : ", e);
    return null;
  }
};
export const decrypt = (encrypted: string) => {
  try {
    const secret_key = process.env.CRYPTO_SECRET_KEY;
    if (!secret_key) {
      console.log("No Secret Key.");
      return null;
    }
    const decrypted_bytes = CryptoJS.AES.decrypt(encrypted, secret_key);
    const decrypted = decrypted_bytes.toString(CryptoJS.enc.Utf8);
    return decrypted;
  } catch (e) {
    console.log("Decryption error occur : ", e);
    return null;
  }
};

두가지 기능 encrypt 와 decrypt 기능이다.
암호화, 복호화 하는 부분은

  • const encrypted = CryptoJS.AES.encrypt(payload, secret_key).toString();
  • const decrypted_bytes = CryptoJS.AES.decrypt(encrypted, secret_key);
    const decrypted = decrypted_bytes.toString(CryptoJS.enc.Utf8);

이렇게 두 부분이다.

알고리즘으로는 AES 를 사용하였고, 암호화로 두가지 인자

  • 암호화할 대상
  • 암호키

이렇게 두가지가 필요하다.
암호키의 경우 무작위로 생성된 키를 사용했다.
무작위로 생성된 키는 https://randomkeygen.com/ 과 같은 사이트에서 쉽게 얻을 수 있다.

복호화는

  • 복호화할 대상
  • 암호키

이렇게 두가지가 필요한데,
복호화 시 encoding 되어 나오므로 상기와 같이 decoding 과정이 필요하다.

References

profile
JavaScript, Node.js, Express, React, React Native, GraphQL, Apollo, Prisma, MySQL

0개의 댓글