Widely available すべての主要ブラウザで対応済み。安心して使用可能。

対応ブラウザ

機能 デスクトップ モバイル
Chrome
Edge
Firefox
Safari
Chrome Android
Safari iOS
11
12
21
5
18
5

crypto は Window インターフェイスの読み取り専用プロパティで、グローバルオブジェクトに関連付けられた Crypto オブジェクトを返します。このオブジェクトは、ウェブページが暗号に関連したサービスにアクセスできるようにします。

37
12
1
5
37
5

Crypto.getRandomValues() メソッドは、暗号強度の強い乱数値を取得します。 引数で与えた配列は、すべて乱数で(暗号学的な意味でランダムに)埋められます。

11
12
21
5
18
5

randomUUID() は Crypto インターフェイスのメソッドで、暗号強度の強い乱数生成器を用いて v4 UUID を生成するのに用いられます。

92
92
95
15.4
92
15.4

Crypto.subtle 読み取り専用プロパティは、低水準の暗号化操作ができる SubtleCrypto オブジェクトを返します。

37
12
34
11
37
11
subtle (secure context required)

安全なコンテキストが必要

60
79
75
15
60
15
worker_support

労働者で利用可能

37
79
48
10.1
37
10.3

CryptoKey はウェブ暗号化 API のインターフェイスで、SubtleCrypto メソッドの SubtleCrypto.generateKey、SubtleCrypto.deriveKey、SubtleCrypto.importKey、SubtleCrypto.unwrapKey のいずれかから取得したkeyを表します。

37
12
34
7
37
7

algorithm は CryptoKey インターフェイスの読み取り専用プロパティで、このキーを使用できるアルゴリズムを記述したオブジェクトと、関連する追加の引数を返します。

37
12
34
7
37
7

extractable は CryptoKey インターフェイスの読み取り専用プロパティで、SubtleCrypto.exportKey() または SubtleCrypto.wrapKey() を使用してキーを抽出できるかどうかを示します。

37
12
34
7
37
7

type は CryptoKey インターフェイスの読み取り専用プロパティで、オブジェクトが表すキーの種類を示します。以下の値を示します。

37
12
34
7
37
7

usages は CryptoKey インターフェイスの読み取り専用プロパティで、そのキーで何ができるかを示します。

37
12
34
7
37
7

SubtleCrypto はウェブ暗号化 API のインターフェイスで、数々の低水準の暗号化関数を提供します。 SubtleCrypto の機能にアクセスするには、 crypto_property プロパティから取得した Crypto オブジェクトの Crypto.subtle プロパティを使用します。

37
12
34
11
37
11

decrypt() は SubtleCrypto インターフェイスのメソッドで、暗号化されたデータを復号します。 引数として key、オプションの引数、復号するデータ(「暗号文」とも呼ばれます)を取ります。 これは、復号されたデータ(「平文」とも呼ばれます)で履行される Promise を返します。

37
79
34
7
37
7

deriveBits() は SubtleCrypto インターフェイスのメソッドで、ベース鍵からビットの配列を導出するために使用することができます。

41
79
34
11
41
11
deriveBits (x25519)

`X25519` アルゴリズム

133
133
130
17
133
17

deriveKey() は SubtleCrypto インターフェイスのメソッドで、マスター鍵から秘密鍵を導出するために使用することができます。

41
79
34
11
41
11
deriveKey (derivedKeyAlgorithm option aes)

`AES` を `derivedKeyAlgorithm` オプションの値として

41
79
34
11
41
11
deriveKey (derivedKeyAlgorithm option hkdf)

`HKDF` を `derivedKeyAlgorithm` オプションの値として

41
79
119
11
41
11
deriveKey (derivedKeyAlgorithm option hmac)

`HMAC` を `derivedKeyAlgorithm` オプションの値として

41
79
34
11
41
11
deriveKey (derivedKeyAlgorithm option pbkdf2)

`derivedKeyAlgorithm` オプションの値として `PBKDF2`

41
79
119
11
41
11
deriveKey (x25519)

`X25519` アルゴリズム

133
133
130
17
133
17

digest() は SubtleCrypto インターフェイスのメソッドで、指定されたデータのdigestを返します。ダイジェストとは、可変長の入力に由来する固定長の短い値です。暗号的ダイジェスト値は耐衝突性を示すため、同じダイジェスト値を持つ 2 つの異なる入力を見つけるのは非常に困難です。

41
79
34
7
41
7

encrypt() は SubtleCrypto インターフェイスのメソッドで、データを暗号化します。

37
79
34
7
37
7

exportKey() は SubtleCrypto インターフェイスのメソッドで、キーをエクスポートします。すなわち、これは CryptoKey オブジェクトを入力として取り、その鍵を外部のポータブルな形式で表します。

37
79
34
7
37
7
exportKey (ed25519)

`Ed25519` アルゴリズム

137
137
129
17
137
17
exportKey (x25519)

`X25519` アルゴリズム

133
133
130
17
133
17

generateKey() は SubtleCrypto インターフェイスのメソッドで、新しい(対称鍵アルゴリズム用の)鍵または(公開鍵アルゴリズム用の)鍵ペアを生成します。

37
79
34
7
37
7
generateKey (ed25519)

`Ed25519` アルゴリズム

137
137
129
17
137
17
generateKey (x25519)

`X25519` アルゴリズム

133
133
130
17
133
17

importKey() は SubtleCrypto インターフェイスのメソッドで、鍵をインポートします。つまり、外部のポータブル形式の鍵を入力として取り、ウェブ暗号 API で使用できる CryptoKey オブジェクトを返します。

37
79
34
7
37
7
importKey (ed25519)

`Ed25519` アルゴリズム

137
137
129
17
137
17
importKey (x25519)

`X25519` アルゴリズム

133
133
130
17
133
17
secure_context_required

安全なコンテキストが必要

60
79
75
15
60
15

sign() は SubtleCrypto インターフェイスのメソッドで、デジタルsignatureを生成します。

37
79
34
7
37
7
sign (ed25519)

`Ed25519` アルゴリズム

137
137
129
17
137
17

unwrapKey() は SubtleCrypto インターフェイスのメソッドで、鍵を「ラップ解除」します。 これは、エクスポートされ暗号化された(「ラップされた」とも呼ばれる)鍵を入力として受け取ることを意味しています。 鍵を復号してからインポートし、ウェブ暗号 API で使用できる CryptoKey オブジェクトを返します。

37
79
34
7
37
7

verify() は SubtleCrypto インターフェイスのメソッドで、デジタルsignatureを検証します。

37
79
34
7
37
7
verify (ed25519)

`Ed25519` アルゴリズム

137
137
129
17
137
17
worker_support

労働者で利用可能

37
79
48
11
37
11

wrapKey() は SubtleCrypto インターフェイスのメソッドで、鍵を「ラップ」します。 これは、外部のポータブルな形式で鍵をエクスポートし、エクスポートされた鍵を暗号化することを意味しています。 鍵をラップすることで、保護されていないデータストア内や保護されていないネットワーク上での送信など、信頼されていない環境で鍵を保護することを支援します。

37
79
34
7
37
7
1+対応 (バージョン) 未対応 注釈あり サブ機能の解説は MDN Web Docs (CC BY-SA 2.5)
注釈 2件
削除済み
  • このバージョンで機能が削除されました (11.1)
対応条件
  • ベンダープレフィックス付きで対応: webkit (7)
注釈 2件
削除済み
  • このバージョンで機能が削除されました (11.3)
対応条件
  • ベンダープレフィックス付きで対応: webkit (7)
注釈 2件
削除済み
  • このバージョンで機能が削除されました (11.1)
対応条件
  • ベンダープレフィックス付きで対応: WebKit (7)
注釈 2件
削除済み
  • このバージョンで機能が削除されました (11.3)
対応条件
  • ベンダープレフィックス付きで対応: WebKit (7)
注釈 3件
制限事項
  • このブラウザでは部分的にしか実装されていません
削除済み
  • このバージョンで機能が削除されました (79)
実装メモ
  • 未対応:AES-CTR。
注釈 4件
制限事項
  • このブラウザでは部分的にしか実装されていません
削除済み
  • このバージョンで機能が削除されました (79)
実装メモ
  • 未対応:ECDH。
  • 未対応:HKDF、PBKDF2。
注釈 4件
制限事項
  • このブラウザでは部分的にしか実装されていません
削除済み
  • このバージョンで機能が削除されました (79)
実装メモ
  • 未対応:ECDH。
  • 未対応:HKDF、PBKDF2。
注釈 3件
制限事項
  • このブラウザでは部分的にしか実装されていません
削除済み
  • このバージョンで機能が削除されました (41)
実装メモ
  • バージョン41以前は、Chromeでは`algorithm`パラメータがオブジェクトであることが想定されていました。
注釈 3件
制限事項
  • このブラウザでは部分的にしか実装されていません
削除済み
  • このバージョンで機能が削除されました (79)
実装メモ
  • サポートされていません:SHA-1。
注釈 3件
制限事項
  • このブラウザでは部分的にしか実装されていません
削除済み
  • このバージョンで機能が削除されました (41)
実装メモ
  • バージョン41以前のChrome(Android版)では、`algorithm`パラメータはオブジェクトであることが想定されていました。
注釈 3件
制限事項
  • このブラウザでは部分的にしか実装されていません
削除済み
  • このバージョンで機能が削除されました (79)
実装メモ
  • 未対応:AES-CTR。
注釈 4件
制限事項
  • このブラウザでは部分的にしか実装されていません
削除済み
  • このバージョンで機能が削除されました (79)
実装メモ
  • 未対応:RSA-PSS、ECDSA、ECDH。
  • 未対応:AES-CTR。
注釈 4件
制限事項
  • このブラウザでは部分的にしか実装されていません
削除済み
  • このバージョンで機能が削除されました (79)
実装メモ
  • 未対応:RSA-PSS、ECDSA、ECDH。
  • 未対応:AES-CTR。
注釈 4件
制限事項
  • このブラウザでは部分的にしか実装されていません
削除済み
  • このバージョンで機能が削除されました (79)
実装メモ
  • 未対応:RSA-PSS、ECDSA、ECDH。
  • 未対応:AES-CTR、HKDF、PBKDF2。
注釈 3件
制限事項
  • このブラウザでは部分的にしか実装されていません
削除済み
  • このバージョンで機能が削除されました (79)
実装メモ
  • 未対応:RSA-PSS、ECDSA。
注釈 1件
実装メモ
  • RFC 8032に準拠した決定論的署名ではなく、draft-irtf-cfrg-det-sigs-with-noiseに準拠したランダム化された署名を生成します。
注釈 1件
実装メモ
  • RFC 8032に準拠した決定論的署名ではなく、draft-irtf-cfrg-det-sigs-with-noiseに準拠したランダム化された署名を生成します。
注釈 3件
制限事項
  • このブラウザでは部分的にしか実装されていません
削除済み
  • このバージョンで機能が削除されました (79)
実装メモ
  • 未対応:AES-CTR。
注釈 3件
制限事項
  • このブラウザでは部分的にしか実装されていません
削除済み
  • このバージョンで機能が削除されました (79)
実装メモ
  • 未対応:RSA-PSS、ECDSA。
注釈 3件
制限事項
  • このブラウザでは部分的にしか実装されていません
削除済み
  • このバージョンで機能が削除されました (79)
実装メモ
  • 未対応:AES-CTR。

実務での使いどころ

  • Web Cryptography の活用

    Crypto インターフェイスは、現在のコンテキストで利用できる基本的な暗号機能を表します。

注意点

  • 古いブラウザでは対応していない場合がある。

実装メモ

  • 一部の API はセキュアコンテキスト (HTTPS) やユーザー操作起点を必要とする。利用前に要件を確認すること。