YagSill

node.js crypto-js로 비밀번호 암호화 복호화 하기 본문

node.js

node.js crypto-js로 비밀번호 암호화 복호화 하기

YagSill 2023. 6. 13. 22:47
728x90

안녕하세요 yagsill 입니다.

 

백엔드에서 로그인 또는 회원가입 할 때 비밀번호를 DB에 대충 때려넣으면 문제가 생깁니다.

그래서 암호화를 하고 DB에서 가져온 비밀번호를 또 복호화 해서 로그인, 회원가입 처리를 해주어야 하는데 말이죠

crypto-js로 진행해 보겠습니다.

 

1. 일단 crypto-js 패키지를 깔아주세요

npm install crypto-js

 

2. 암호화 및 복호화를 진행할 스크립트에 추가해주세요

const cryptojs = require("crypto-js");

const encryptedKey = "암복호화키를 넣어주세용";

 

3.  암호화, 복호화 기능 따로 분리 해서 함수로 만들어 줍니다.

function encryptPassword(password, encryptedKey) {
  var cipherText = cryptojs.AES.encrypt(password, encryptedKey).toString();
  return cipherText;
}

function decryptPassword(password, encryptedKey) {
  var bytes = cryptojs.AES.decrypt(password, encryptedKey);
  var originalText = bytes.toString(cryptojs.enc.Utf8);

  return originalText;
}

 

4. 암호화할 비밀번호 encryptPassword에 넣어주기 / 복호화할 비밀번호 decryptPassword에 넣어주기

※ 회원가입을 진행할 때 DB에 넣는 상황입니다.

 

var password = encryptPassword('암호화할 데이터', encryptedKey);

 

이렇게 하고 password를 찍어볼게요.

저의 비밀번호는 1234 로 넣어봤습니다.

U2FsdGVkX1/EVsoQ9MthIx1jPHI/j7C6ZlJRfXspHY8=

 

암호화가 성공적으로 이루어 졌습니다. 이제 DB에 이 암호화문을 넣어줄께요!

 

DB에 패스워드가 아주 잘 들어갔습니다.

 

이제는 로그인을 해보겠습니다.

var password = decryptPassword('복호화 할 데이터', encryptedKey);

이러고 password를 찍어볼까요??

1234

입력했던 비밀번호 1234가 복호화 되어서 보여지게 됩니다.

 

var originPw = param.user_pw; // 비밀번호 파라미터
var password = decryptPassword('복호화 할 데이터', encryptedKey);

if (originPw != password) {
return res.json({
  resultCode: 400,
  resultMsg: "비밀번호가 맞지 않습니다.",
});

 

이런식으로 비밀번호가 틀렸을 때의 상황을 해결할 수 있습니다~

728x90