0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Web Cripto API(SHA256)がHTTP環境で使えない時の対処方法

Last updated at Posted at 2025-02-01

素直にライブラリを使いましょう:relaxed:

npm install jssha
utils.mjs
import jsSHA from "jssha";

/**
 * パスワードをSHA-256でハッシュ化する
 * @param {string} password - ハッシュ化するパスワード
 * @return {string} - ハッシュ値
 */
export function toHash(password) {
    const shaObj = new jsSHA("SHA-256", "TEXT");
    shaObj.update(password);
    const result = shaObj.getHash("HEX")
    return result;
}

console.log(toHash("たかし"));
// 出力 → 4db72cb639c9c8f8aa4e8fbdfd6228f5e4025a1260781d3499310a576cf75cbb

そもそもSHA256ってなに?

SHA256(Secure Hash Algorithm 256-bit)はハッシュ関数の一つで、ハッシュ関数とは何かしらの値を入れると、固定長のハッシュ値が出力されるものです。

ハッシュドポテトおいしいよね。ハッシュってめちゃくちゃって意味らしい。めちゃくちゃポテト。

ハッシュ関数の性質

最近ハッシュ関数について知ってちょっと勉強してるのですがその性質がとても興味深いんです!

入力が少しでも違うと全く違う値が出力される、そしてハッシュ値から元の値には戻せないという不可逆性。
アルゴリズムを紹介している記事を見ましたが全く理解できませんね:head_bandage:

2の256乗「115,792,089,237,316,195,423,570,985,008,687,907,853,
269,984,665,640,564,039,457,584,007,913,129,639,936」という想像もつかない巨大な空間の中に入力された値を1点の座標にマッピングするイメージ...?

ハッシュ関数の使い道

主にパスワードを平文で保存しないためにハッシュ値に変換して保存する。
あとは、入力の違いを検出できるという性質を利用して元データに変更が加えられたかどうかも判別できますね!

0
0
0

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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?