JavaScript/crypto

カテゴリ:Book:JavaScript#crypto%20

Window.crypto は、ブラウザの window オブジェクトが提供するプロパティで、暗号化関連の機能を提供する Crypto オブジェクトを返します。Crypto オブジェクトは、Web Cryptography API の一部であり、暗号化、復号、ハッシュ計算、乱数生成などの操作を行うためのメソッドやプロパティを提供します。

Window.crypto の基本

Window.crypto は、ブラウザ環境で利用可能なグローバルオブジェクト window のプロパティです。以下のようにアクセスできます。

const crypto = window.crypto; // または単に crypto
console.log(crypto); // Crypto オブジェクト

Crypto オブジェクトの主な機能

Crypto オブジェクトは、以下のような機能を提供します。

乱数生成

  • crypto.getRandomValues():
    • 暗号学的に安全な乱数を生成します。
    • 例:
    const array = new Uint8Array(10);
    crypto.getRandomValues(array);
    console.log(array); // ランダムなバイト列
    

暗号化と復号

  • crypto.subtle:
    • SubtleCrypto オブジェクトを提供し、以下の操作を行います。
      • 暗号化と復号(AES、RSAなど)。
      • デジタル署名と検証。
      • ハッシュ計算(SHA-256など)。
      • 鍵の生成と管理。
    • 例(SHA-256ハッシュ計算):
      const encoder = new TextEncoder();
      const data = encoder.encode("Hello, World!");
      crypto.subtle.digest("SHA-256", data).then(hash => {
        console.log(new Uint8Array(hash)); // SHA-256ハッシュ
      });
      

その他の機能

  • crypto.randomUUID():
    • ランダムなUUID(Universally Unique Identifier)を生成します。
    • 例:
      const uuid = crypto.randomUUID();
      console.log(uuid); // 例: "f47ac10b-58cc-4372-a567-0e02b2c3d479"
      

使用例

乱数生成

const array = new Uint32Array(5);
crypto.getRandomValues(array);
console.log(array); // ランダムな32ビット整数の配列

SHA-256ハッシュ計算

const encoder = new TextEncoder();
const data = encoder.encode("Hello, World!");
crypto.subtle.digest("SHA-256", data).then(hash => {
  const hashArray = Array.from(new Uint8Array(hash));
  const hashHex = hashArray.map(b => b.toString(16).padStart(2, "0")).join("");
  console.log(hashHex); // SHA-256ハッシュ(16進数)
});

UUID生成

const uuid = crypto.randomUUID();
console.log(uuid); // 例: "f47ac10b-58cc-4372-a567-0e02b2c3d479"

対応ブラウザ

Window.crypto は、以下のブラウザでサポートされています。

  • Chrome
  • Firefox
  • Safari
  • Edge
  • Opera

注意点

  • セキュリティ:
    • crypto.subtle は、HTTPS接続でのみ利用可能です(ローカルホストや file:// プロトコルを除く)。
    • これは、暗号化操作がセキュリティ上重要なためです。
  • 非推奨の機能:
    • 古いブラウザでは、crypto.getRandomValues() 以外の機能がサポートされていない場合があります。

まとめ

Window.crypto は、ブラウザで暗号化関連の操作を行うための強力なAPIです。主な機能は以下の通りです。

  • 乱数生成: crypto.getRandomValues()
  • 暗号化と復号: crypto.subtle
  • UUID生成: crypto.randomUUID()
カテゴリ:Book:JavaScript#crypto%20 カテゴリ:JavaScript カテゴリ:Web API
カテゴリ:Book:JavaScript カテゴリ:JavaScript カテゴリ:Pages using the JsonConfig extension カテゴリ:Web API