24
28

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[node.js]Expressでパスワードのハッシュ化を行おう

Last updated at Posted at 2019-06-25

はじめまして、PMをやっているtatsukenと申します。はじめまして
研修の一環でvue.js、expressを書くことがあったので、そのことを中心にまとめていきたいと思います

はじめに

パスワードをデータベースに保存するときにはその情報をハッシュ化する必要があります。
なぜパスワードをハッシュ化しないといけないかなどを詳しく知りたい方はこちらを参考にしてみてください。
今回はbcryptというライブラリを使ってデータのハッシュ化を行って行きたいと思います。

実装

インストール

npm install bcrypt -s

パスワードのハッシュ化

まずExpress内の自分がデータをハッシュ化したいファイル内で以下のように記述してください

hash.js
const bcrypt = require('bcrypt');
const password = "hoge";
let hashed_password = bcrypt.hashSync(password, 10);
console.log(hashed_password);

"hoge"という文字列がランダムな文字に変換されています。

ハッシュ化されたパスワードの照合

ハッシュ化されたパスワードと自分の知っているパスワードの照合を行っていきます

hash_confirm.js
const bcrypt = require('bcrypt');
bcrypt.compareSync("hoge", hash_password) // =>ture
bcrypt.compareSync("fake_hoge", hash_password) // =>false
  • hash_dataはもともと"hoge"をハッシュ化したものなので、bcrypt.compareSync(hash_data, "hoge")trueとなります。
  • bcrypt.compareSync(hash_data, "fake_hoge")はハッシュ化される前のデータと比較されているデータ(今回は"hoge"face_hogeを比較している)が異なるのでfalseとなる。

最後に

今回は非常に簡単なhash化の方法をご紹介しました。
もっと詳しいことが知りたい場合はこちらを参照ください。callbackやasync/awaitでエラーハンドリングを行うことも出来ます。
なにか間違いなどありましたら指摘していただけると幸いです。

24
28
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
24
28

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?