docこちらは各ブラウザが機能を提供しているクライアントサイドの暗号化関連のAPIライブラリとなります。cryptoの違いは、暗号化の操作をサーバーサイドでやるか、フロントエンドでやるか、という設計思想の違いであり、実装したい機能や暗号化の結果にほとんど違いはありません。cryptoのほうでサンプルコードを多く紹介します。基本的な使い方を説明していきましょう。「ハッシュ化」は後々"復号化"する必要がない場合に用いる暗号化の一種です。ハッシュというと、ある入力文字列をハッシュ関数へ与えて、ハッシュ値を出力する、というだけのものになります。createHash('sha256').update(txt).digest('base64');//👇Base64形式のハッシュ値が表示されるconsole.log(hashedText);ハッシュ値を得る利点は、逆方向への計算が難しく、ハッシュ元の文字列を推測しにくくなるということにあります。同じ文字列、同じアルゴリズムでハッシュ値を出力した場合は、全く同じ結果を得ることになります。createHash('sha256').update(`絶対バレたくない鍵は${secret_key}`).digest('base64');のようにハッシュ化した場合、一見良さそうにも思いますが、実際にはセキュリティ面ではあまり推奨できるやり方ではないようです。そこで、いうなれば「署名付きのハッシュ関数」である「HMAC」と呼ばれるハッシュ関数を利用することになります。secret_key).update(`絶対バレたくない言葉`).digest('base64');とすることで、暗号化したいメッセージとハッシュ値を生成する秘密鍵を分離できて、より堅牢でセキュアなハッシュ値が得られるようです。先程のハッシュ化と異なり、暗号化した後のデータを、復号化できるもので、一般的にこちらを「暗号化」を呼んでいることがほとんどです。暗号化・復号化の可逆的な操作を行わせるため、一方方向の処理で済むハッシュ化よりもより複雑な仕組みを必要とします。サーバー側で暗号化の処理を行うコードの一例としては以下のようになります。encrypted;};ここではいくつか、あまり聞き慣れない暗号化・復号化に必要なパラメーターとしてソルトとIVが登場しているのが分かると思います。暗号化処理はこのソルト(でハッシュ化したパスワード)とIVを基に、createCipheriv関数でCipherivのクラスインスタンスを作成します。作成したCipherivインスタンスからupdate関数を呼び出すことで、暗号化した結果を得ます。update関数は1回だけでなく何度か繰り返すことでより暗号化の手続きを複雑化することが可能です。ポイントとなるupdate関数の引数に関しては以下の通りです。