[express.js] bcrypt

김민재·2024년 4월 3일

express.js

목록 보기
25/39

bcrypt란?

  • 평문을 암호문으로 바꾸는 과정. 암호화 알고리즘을 통해 원래 정보를 변조시켜 복호화할 수 없다면 정보를 알 수 없게 만드는 라이브러리

  • bcrypt는 솔트(salt) 와 비밀번호를 해시로 암호화 해서 저장한다.

    bcrypt 사용법

    1. npm i bcrypt

    2. model 파일에서 해시된 비밀번호를 저장하고, db에 저장된 비밀번호와 로그인 시 입력한 비밀번호를 compare해서 로그인이 가능하게 한다.

      // userSchema가 save 되기 전에 password를 bcrypt.genSalt 함수를 이용해 db에 저장한다.
      const saltRounds = 10;
      userSchema.pre("save", function (next) {
       let user = this;
       if (user.isModified("password")) {
         // salt 생성
         bcrypt.genSalt(saltRounds, function (err, salt) {
           if (err) return next(err);
      
           bcrypt.hash(user.password, salt, function (err, hash) {
             if (err) return next(err);
             user.password = hash;
             next();
           });
         });
       } else {
         next();
       }
      });
      // 로그인 시 해시된 비밀번호와 compare
      userSchema.methods.comparePassword = function (plainPassword) {
       return new Promise((resolve, reject) => {
         bcrypt.compare(plainPassword, this.password, (err, isMatch) => {
           if (err) {
             return reject(err);
           }
           resolve(isMatch);
         });
       });
      };
profile
개발 경험치 쌓는 곳

0개의 댓글