Get to know MDN better
このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2020年1月.
安全なコンテキスト用: この機能は一部またはすべての対応しているブラウザーにおいて、安全なコンテキスト (HTTPS) でのみ利用できます。
encrypt() は SubtleCrypto インターフェイスのメソッドで、データを暗号化します。
引数として、暗号化する key 、アルゴリズム固有の引数、暗号化するデータ(「平文」とも呼ばれます)を取ります。 暗号化されたデータ(「暗号文」とも呼ばれます)で履行される Promise を返します。
使用するアルゴリズムと、必要に応じて追加の引数を指定するオブジェクトです。
暗号化に使用するキーを格納した CryptoKey です。
dataArrayBuffer、TypedArray、DataView のいずれかで、暗号化するデータ(平文 とも呼ばれます)を格納します。
「暗号文」を格納した ArrayBuffer で履行される Promise です。
以下の例外が発生した場合、プロミスは拒否されます。
InvalidAccessError DOMExceptionリクエストされた処理が指定された鍵に対して有効でない場合に発生します(無効な暗号化アルゴリズム、または指定した暗号化アルゴリズムに対して無効な鍵など)。
OperationError DOMException処理固有の理由で処理に失敗した場合に発生します(アルゴリズム引数が不正なサイズであったり、 AES-GCM の平文が 239−256 バイトよりも長いなど)。
ウェブ暗号 API は encrypt() と decrypt() の処理に対応する 4 つのアルゴリズムを提供します。
これらのアルゴリズムの 1 つである RSA-OAEP は公開鍵暗号システムです。
ここにある他の3つの暗号化アルゴリズムはすべて対称鍵アルゴリズムで、すべて同じ基盤である AES (Advanced Encryption Standard) をベースにしています。 これらの違いはモードです。 ウェブ暗号 API は 3 つの異なる AES モードに対応しています。
暗号文が攻撃者によって変更されていないことを調べるために、「認証された暗号化」を使用することを強く推奨します。 認証は、攻撃者がシステムに任意のメッセージの復号を依頼し、その結果を使用して秘密鍵に関する情報を推測することができる、chosen-ciphertext 攻撃からの防御を支援します。 CTR モードと CBC モードに認証を追加することは可能ですが、既定値では提供されておらず、手動で実装するために些細な、しかし重大な間違いを犯す可能性があります。 GCM は組み込みの認証を提供し、そのため他の 2 種類の AES モードよりも推奨されることが多いです。
RSA-OAEP 公開鍵暗号システムは、 RFC 3447 で定義されています。
これは AES のカウンターモードの表現であり、 NIST SP800-38A で定義されています。
AES はブロック暗号であり、メッセージをブロックに分割し、一度に 1 ブロックずつ暗号化することを意味しています。 CTR モードでは、メッセージのブロックが暗号化されるたびに、データの余分なブロックが混合されます。この余分なブロックは「カウンターブロック」と呼ばれます。
指定されたカウンターブロックの値は、同じ鍵で複数回使用してはいけません。
通常これは、カウンターブロックの初期値を 2 つの連結部分に分割することで実現されます。
基本的には、ノンスはカウンターブロックが一つのメッセージから次のメッセージに再利用されないことを保証し、カウンターはカウンターブロックが単一のメッセージ内で再利用されないことを保証します。
メモ: 詳しくは Appendix B of the NIST SP800-38A standard を参照してください。
これは AES の暗号化ブロックチェーンモードにおける表現であり、 NIST SP800-38A で定義されています。
これは AES の ガロア/カウンターモードにおける表現であり、 NIST SP800-38D で定義されています。
このモードと他のモードとの大きな違いの一つは、GCM が「認証された」モードであり、暗号文が攻撃者によって変更されていないことのチェックが含まれていることを意味しています。
メモ: GitHub の動作例を試してみることができます。
このコードはテキストボックスのコンテンツを読み取り、暗号化のためにエンコードし、RSA-OAEPを使用して暗号化します。 GitHub で完全なコードを確認してください。
このコードはテキストボックスのコンテンツを読み取り、暗号化のためにエンコードし、 CTR モードで AES を使用して暗号化します。 GitHub で完全なコードを確認してください。
このコードはテキストボックスのコンテンツを読み取り、暗号化のためにエンコードし、 CBC モードで AES を使用して暗号化します。 GitHub で完全なコードを確認してください。
このコードはテキストボックスのコンテンツを読み取り、暗号化のためにエンコードし、 GCM モードで AES を使用して暗号化します。 GitHub で完全なコードを確認してください。
| Web Cryptography Level 2 # SubtleCrypto-method-encrypt |
Enable JavaScript to view this browser compatibility table.
This page was last modified on 2025年6月24日 by MDN contributors.
Your blueprint for a better internet.
Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998–2026 by individual mozilla.org contributors. Content available under a Creative Commons license.