Hashing

5878 ワード

ハシンって何?👀


  • 暗号化は可能ですが、復号化はできません.一方向暗号化と呼ばれます.

  • 会員加入時に入力したパスワードをDBに保存する際にたくさん使います!

  • パスワードを検索するときに一方向暗号化を使用する場合は、新しいパスワードを作成できます.双方向暗号化を使用する場合は、パスワードを変更できます(前の場合より安全です).
  • brcyptという名前のライブラリを使用してハッシュ
  • import { Args, Mutation, Query, Resolver } from '@nestjs/graphql';
    import { CreateUserInput } from './dto/createUser.input';
    import { User } from './entities/users.entity';
    import { UserService } from './user.service';
    import * as bcrypt from 'bcrypt';
    
    @Resolver()
    export class UserResolver {
      constructor(
        private readonly userService: UserService, 
      ) {}
    
      //회원 생성(회원가입)
      @Mutation(() => User)
      async createUser(
        @Args('userInput') userInput: CreateUserInput, 
      ) {
        const hashedPassword = await bcrypt.hash(userInput.password, 10);// bcrypt를 이용해 hashing
        userInput.password = hashedPassword;
        return this.userService.create({ userInput });
      }
    
    
      
    // db저장 형태 예시)  비밀번호: 1234 (hashing)=>  $2b$10$t0HaFZK2CXamx7gvEj/y5OQ8F0hn6C4LynVyssr4j6WIW1tlm/Xoy
    
    // 로그인 시 암호화된 비밀번호와 비교 방법
    // bcrypt의 compare기능 이용
    const isAuth = await bcrypt.compare(password, user.password);
    if (!isAuth) throw new UnprocessableEntityException('비밀번호 불일치!!');
    
    勉強して書いているブログ.
    間違った内容があるかもしれませんが、もしあれば、メッセージを残してください.ありがとうございます.
    😊