SilvenLEAF의 bcrypt를 사용한 가장 간단한 암호 해싱 방법

우리는 bcrypt를 사용하여 비밀번호를 해시합니다. 그러나 그것을 사용하는 방법? 우리는 일반적으로 bcrypt로 2가지 기본 작업을 수행합니다.
  • 해시 암호(가입할 때 암호 입력을 해시한 다음 데이터베이스에 일반 암호 대신 이 해시된 암호를 저장합니다.)
  • 암호 확인(로그인할 때 일반 암호 입력을 저장한 해시 암호와 비교)

  • BCRYPT를 사용하는 가장 간단한 방법



  • 비밀번호 해시

  • //it creates the hashed password. Save this hashedPassword on your DB
    const hashedPassword = bcrypt.hashSync(yourPasswordFromSignupForm, bcrypt.genSaltSync());
    


    이제 이 hashedPassword를 데이터베이스에 저장하십시오.

  • 비밀번호 확인

  • const doesPasswordMatch = bcrypt.compareSync(yourPasswordFromLoginForm, yourHashedPassword)
    


    doPasswordMatch는 부울입니다. 암호가 일치하면 true이고, 그렇지 않으면 false입니다.

    BCRYPT 사용을 위한 전체 가이드



    먼저 터미널에 이것을 입력하여 bcryptjs 패키지를 설치하십시오npm install bcryptjs
    이제 사용할 준비가 되었습니다.

    0단계.



    사용자 모델을 만듭니다. 이 경우 우리는 간단하게 유지할 것입니다. 우리 모델에는 이메일과 비밀번호 필드만 있습니다.

    1단계(BCRYPT를 사용하여 가입을 위해 DB에 해시된 비밀번호 저장).




    const router = require('express').Router();
    const User = require('YOUR_USER_MODEL');
    
    
    const bcrypt = require('bcryptjs')
    
    
    router.post('/signup', async (req, res)=>{
      // these emailFromSignupForm and passwordFromSignupForm are coming from your frontend
      const { emailFromSignupForm, passwordFromSignupForm } = req.body;
    
     //creating a new user on our database
      const newUser = await User.create({
      email: emailFromSignupForm,
      hashedPassword: bcrypt.hashSync(passwordFromSignupForm, bcrypt.genSaltSync()),
    });
    
    //sending back the newUser to the frontEND
    res.json(newUser);
    
    
    })
    
    
    module.exports = router;
    


    이것은 bcrypt를 사용하여 비밀번호를 해시하고 해시된 비밀번호를 저장하는 방법에 대한 데모 코드입니다.

    2단계(BCRYPT를 사용하여 로그인 암호 비교).




    const router = require('express').Router();
    const User = require('YOUR_USER_MODEL');
    
    
    const bcrypt = require('bcryptjs')
    
    
    router.post('/login', async (req, res)=>{
      // these emailFromLoginForm and passwordFromLoginForm are coming from your frontend
      const { emailFromLoginpForm, passwordFromLoginForm } = req.body;
    
      //find a user from the database with your emailFromLoginForm
     const existingUser = await User.findOne({ email: emailFromLoginForm });
    
    //if no user found
    if(!existingUser) return res.json({ msg: `No account with this email found` })
    
    //if the user is found, I mean if the user is on our database, compare the passwordFromLoginForm with the hashedPassword on our database to see if the passwords match (bcrypt will do this for us)
    const doesPasswordMatch = bcrypt.compareSync(passwordFromLoginForm, existingUser.hashedPassword); //it wii give you a boolean, so the value of doesPasswordMatch will be a boolean
    
    //if the passwords do not match
    if(!doesPasswordMatch) return res.json({ msg: `Passwords did not match` });
    
    //if the passwords match, send back the existingUser to the frontEND
    res.json(existingUser);
    }
    
    
    })
    
    
    module.exports = router;
    


    이것은 bcrypt를 사용하여 데이터베이스에 저장된 hashedPassword와 passwordFromYourLoginForm을 비교하고 확인하는 방법에 대한 데모 코드입니다.

    이것은 bcrypt를 사용하는 방법에 대한 데모일 뿐입니다. 도움이 되기를 바랍니다.

    질문이 있거나 막힌 경우



    언제든지 연락주세요. LinkedIN 또는 Twitter(
    ).

    나에 대해 더 알고 싶다면 여기가 내 포트폴리오 웹사이트SilvenLEAF.github.io

    나는 당신의 친구가 되고 싶습니다, 저에게 연락 주시기 바랍니다!



    다음 블로그



    다음 블로그 날짜



  • 2020년 11월 3일, 4일, 5일, FETCH API 시리즈

  • 2020년 11월 6일, 비동기 및 대기
  • 2020년 11월 8일 역할 기반 인증 시스템 사용 방법
  • 2020년 11월 10일, JavaScript로 CSS 변수 변경
  • 2020년 11월 12일, 14일, 16일, Passport로 로그인 가입 시스템 만들기(시리즈)
  • 2020년 11월 18일, Google로 로그인을 만드는 방법
  • 2020년 11월 20일, Github으로 로그인을 만드는 방법
  • 2020년 11월 22일, LinkedIn 로그인 생성 방법
  • 2020년 11월 24일, Twitter로 로그인을 만드는 방법
  • 2020년 11월 26일, 28일, 30일, 비밀번호 재설정 시리즈(Node.js 및 React 포함)

  • 이 블로그가 도움이 되셨다면,



    좋아요와 공유 부탁드려요,



    그것은 나에게 많은 의미가 있습니다. 감사

    좋은 웹페이지 즐겨찾기