diff options
author | Peter Bengtsson <mail@peterbe.com> | 2020-12-08 14:40:17 -0500 |
---|---|---|
committer | Peter Bengtsson <mail@peterbe.com> | 2020-12-08 14:40:17 -0500 |
commit | 33058f2b292b3a581333bdfb21b8f671898c5060 (patch) | |
tree | 51c3e392513ec574331b2d3f85c394445ea803c6 /files/ja/web/api/subtlecrypto | |
parent | 8b66d724f7caf0157093fb09cfec8fbd0c6ad50a (diff) | |
download | translated-content-33058f2b292b3a581333bdfb21b8f671898c5060.tar.gz translated-content-33058f2b292b3a581333bdfb21b8f671898c5060.tar.bz2 translated-content-33058f2b292b3a581333bdfb21b8f671898c5060.zip |
initial commit
Diffstat (limited to 'files/ja/web/api/subtlecrypto')
-rw-r--r-- | files/ja/web/api/subtlecrypto/digest/index.html | 145 | ||||
-rw-r--r-- | files/ja/web/api/subtlecrypto/index.html | 81 |
2 files changed, 226 insertions, 0 deletions
diff --git a/files/ja/web/api/subtlecrypto/digest/index.html b/files/ja/web/api/subtlecrypto/digest/index.html new file mode 100644 index 0000000000..9af5b9c2cc --- /dev/null +++ b/files/ja/web/api/subtlecrypto/digest/index.html @@ -0,0 +1,145 @@ +--- +title: SubtleCrypto.digest() +slug: Web/API/SubtleCrypto/digest +tags: + - API + - Method + - Reference + - SubtleCrypto + - WebCrypto API + - digest + - メソッド +translation_of: Web/API/SubtleCrypto/digest +--- +<p>{{APIRef("Web Crypto API")}}{{SecureContext_header}}</p> + +<p>{{domxref("SubtleCrypto")}} インターフェースの <code><strong>digest()</strong></code> メソッドは、指定されたデータの {{Glossary("digest")}} を返します。ダイジェストとは、可変長の入力に由来する固定長の短い値です。暗号的ダイジェスト値は耐衝突性を示すため、同じダイジェスト値を持つ2つの異なる入力を見つけるのは非常に困難です。</p> + +<p>引数として、使用するダイジェストアルゴリズムの識別子とダイジェスト値の元となるデータを受け取ります。ダイジェスト値で解決される {{jsxref("Promise")}} を返します。</p> + +<h2 id="Syntax" name="Syntax">構文</h2> + +<pre class="syntaxbox notranslate">const digest = <var>crypto</var><code>.subtle.digest(<var>algorithm</var>, <var>data</var>)</code>; +</pre> + +<h3 id="Parameters" name="Parameters">引数</h3> + +<ul> + <li><code><var>algorithm</var></code> は、使用するダイジェストアルゴリズムを定義する {{domxref("DOMString")}} です。サポートされる値は次のとおりです: + + <ul> + <li><code>SHA-1</code> (暗号化アプリケーションではこれを使用しないでください)</li> + <li><code>SHA-256</code></li> + <li><code>SHA-384</code></li> + <li><code>SHA-512</code></li> + </ul> + </li> + <li><code><var>data</var></code> は、ダイジェスト値の元となるデータを含む {{jsxref("ArrayBuffer")}} もしくは {{domxref("ArrayBufferView")}} です。</li> +</ul> + +<h3 id="Return_value" name="Return_value">返値</h3> + +<ul> + <li><code><var>digest</var></code> は {{jsxref("Promise")}} であり、ダイジェスト値を含む {{jsxref("ArrayBuffer")}} で解決されます。</li> +</ul> + +<h2 id="Supported_algorithms" name="Supported_algorithms">対応しているアルゴリズム</h2> + +<p>ダイジェストアルゴリズムは <a href="/en-US/docs/Glossary/Cryptographic_hash_function">暗号ハッシュ関数</a> とも呼ばれ、任意の大きなデータブロックを固定サイズの出力 (通常は入力よりもはるかに短い出力) に変換します。暗号化にはさまざまな用途があります。</p> + +<h3 id="SHA-1">SHA-1</h3> + +<p>このアルゴリズムは <a href="https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf">FIPS 180-4</a>, section 6.1 で定義されており、160 bit 長の出力を生成します。</p> + +<div class="blockIndicator warning"> +<p><strong>警告</strong>: このアルゴリズムは現在脆弱であると見なされているため、暗号化アプリケーションには使用しないでください。</p> +</div> + +<h3 id="SHA-256">SHA-256</h3> + +<p>このアルゴリズムは <a href="https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf">FIPS 180-4</a>, section 6.2 で定義されており、256 bit 長の出力を生成します。</p> + +<h3 id="SHA-384">SHA-384</h3> + +<p>このアルゴリズムは <a href="https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf">FIPS 180-4</a>, section 6.5 で定義されており、384 bit 長の出力を生成します。</p> + +<h3 id="SHA-512">SHA-512</h3> + +<p>このアルゴリズムは <a href="https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf">FIPS 180-4</a>, section 6.4 で定義されており、512 bit 長の出力を生成します。</p> + +<div class="blockIndicator note"> +<p>ヒント: キー付きハッシュメッセージ認証コード (<a href="/ja/docs/Glossary/HMAC">HMAC</a>), の作成方法をここで探している場合は、代わりに <a href="/ja/docs/Web/API/SubtleCrypto/sign#HMAC">SubtleCrypto.sign()</a> を使用する必要があります。</p> +</div> + +<h2 id="Example" name="Example">例</h2> + +<h3 id="Basic_example" name="Basic_example">基本的な例</h3> + +<p>この例では、メッセージをエンコードし、 SHA-256 ダイジェスト値を計算して、ダイジェスト長を記録します:</p> + +<pre class="brush: js notranslate">const text = 'An obscure body in the S-K System, your majesty. The inhabitants refer to it as the planet Earth.'; + +async function digestMessage(message) { + const encoder = new TextEncoder(); + const data = encoder.encode(message); + const hash = await crypto.subtle.digest('SHA-256', data); + return hash; +} + +const digestBuffer = await digestMessage(text); +console.log(digestBuffer.byteLength); +</pre> + +<h3 id="ダイジェスト値を16進文字列に変換する">ダイジェスト値を16進文字列に変換する</h3> + +<p>ダイジェストは<code>ArrayBuffer</code>として返されますが、比較および表示のために、ダイジェスト値は多くの場合16進文字列として表されます。 この例では、ダイジェストを計算し、<code>ArrayBuffer</code>を16進文字列に変換します:</p> + +<pre class="brush: js notranslate">const text = 'An obscure body in the S-K System, your majesty. The inhabitants refer to it as the planet Earth.'; + +async function digestMessage(message) { + const msgUint8 = new TextEncoder().encode(message); // encode as (utf-8) Uint8Array + const hashBuffer = await crypto.subtle.digest('SHA-256', msgUint8); // hash the message + const hashArray = Array.from(new Uint8Array(hashBuffer)); // convert buffer to byte array + const hashHex = hashArray.map(b => b.toString(16).padStart(2, '0')).join(''); // convert bytes to hex string + return hashHex; +} + +const digestHex = await digestMessage(text); +console.log(digestHex); +</pre> + +<h2 id="Specifications" name="Specifications">仕様書</h2> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">仕様書</th> + <th scope="col">状態</th> + <th scope="col">備考</th> + </tr> + </thead> + <tbody> + <tr> + <td>{{SpecName('Web Crypto API', '#dfn-SubtleCrypto-method-digest', 'SubtleCrypto.digest()')}}</td> + <td>{{Spec2('Web Crypto API')}}</td> + <td>初回定義</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2> + +<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div> + +<p>{{Compat("api.SubtleCrypto.digest")}}</p> + +<div class="blockIndicator note"> +<p>Chrome 60 では、 TLS 接続出ない場合に crypto.subtle を無効化する機能が追加されました。</p> +</div> + +<h2 id="See_also" name="See_also">関連情報</h2> + +<ul> + <li><a href="https://www.chromium.org/Home/chromium-security/prefer-secure-origins-for-powerful-new-features">Chromium secure origins specification</a></li> + <li><a href="https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf" rel="noopener">FIPS 180-4</a> specifies the SHA family of digest algorithms.</li> +</ul> diff --git a/files/ja/web/api/subtlecrypto/index.html b/files/ja/web/api/subtlecrypto/index.html new file mode 100644 index 0000000000..f313b73907 --- /dev/null +++ b/files/ja/web/api/subtlecrypto/index.html @@ -0,0 +1,81 @@ +--- +title: SubtleCrypto +slug: Web/API/SubtleCrypto +tags: + - API + - Interface + - Reference + - Web Crypto API +translation_of: Web/API/SubtleCrypto +--- +<p>{{APIRef("Web Crypto API")}}</p> + +<p><code><strong>SubtleCrypto</strong></code> インターフェイスは、暗号プリミティブのセットを表します。これは、window コンテキスト ({{domxref("Window.crypto")}}) 内で利用可能な {{domxref("Crypto.subtle")}} プロパティを通して利用できます。</p> + +<div class="warning"> +<p>仕様書より引用 (拙訳): "開発者は、SubtleCrypto インターフェイスを使用する際に、提供される様々なアルゴリズムの設計と実装の両面でセキュリティに関わる問題に注意を払うことが期待されます。生のアルゴリズムは、その使用に必要とされる独自のセキュリティパラメーターとコンポジションを表す多様なプロトコルとアプリケーションの実装において、開発者に最大限の柔軟性を許すために提供されます。"</p> +</div> + +<h2 id="Properties" name="Properties">プロパティ</h2> + +<p><em>このインターフェイスはどのプロパティも定義または継承しません。</em></p> + +<h2 id="Methods" name="Methods">メソッド</h2> + +<p>このインターフェイスはどのメソッドも継承しません。</p> + +<dl> + <dt>{{domxref("SubtleCrypto.encrypt()")}}</dt> + <dd>引数に与えられた平文テキストおよびアルゴリズム、鍵に対応する暗号化されたデータの {{jsxref("Promise")}} を返します。</dd> + <dt>{{domxref("SubtleCrypto.decrypt()")}}</dt> + <dd>引数に与えられた暗号化されたテキストおよびアルゴリズム、鍵に対応する平文データの {{jsxref("Promise")}} を返します。</dd> + <dt>{{domxref("SubtleCrypto.sign()")}}</dt> + <dd>引数に与えられたテキストおよびアルゴリズム、鍵に対応する署名の {{jsxref("Promise")}} を返します。</dd> + <dt>{{domxref("SubtleCrypto.verify()")}}</dt> + <dd>引数に与えられた署名が、同じく引数に与えられたテキストおよびアルゴリズム、鍵と一致するかどうかを示す {{jsxref("Boolean")}} 値の {{jsxref("Promise")}} を返します。</dd> + <dt>{{domxref("SubtleCrypto.digest()")}}</dt> + <dd>引数に与えられたアルゴリズムとテキストから生成されたダイジェストの {{jsxref("Promise")}} を返します。</dd> + <dt>{{domxref("SubtleCrypto.generateKey()")}}</dt> + <dd>引数に与えられたアルゴリズム、抽出可能性、使用法と一致する、対称アルゴリズムでは新たに生成された {{domxref("CryptoKey")}} の {{jsxref("Promise")}} を、非対称アルゴリズムでは 2 個の新たに生成された鍵を含む {{domxref("CryptoKeyPair")}} の {{jsxref("Promise")}} を返します。</dd> + <dt>{{domxref("SubtleCrypto.deriveKey()")}}</dt> + <dd>引数に与えられたマスターキーと特定のアルゴリズムによりもたらされる、新たに生成された {{domxref("CryptoKey")}} の {{jsxref("Promise")}} を返します。</dd> + <dt>{{domxref("SubtleCrypto.deriveBits()")}}</dt> + <dd>引数に与えられたマスターキーと特定のアルゴリズムによりもたらされる、疑似乱数ビットの新たに生成されたバッファーの {{jsxref("Promise")}} を返します。</dd> + <dt>{{domxref("SubtleCrypto.importKey()")}}</dt> + <dd>引数に与えられた書式およびアルゴリズム、生の鍵データ、使用法、抽出可能性に対応する {{domxref("CryptoKey")}} の {{jsxref("Promise")}} を返します。</dd> + <dt>{{domxref("SubtleCrypto.exportKey()")}}</dt> + <dd>要求された書式内の鍵を含むバッファーの {{jsxref("Promise")}} を返します。</dd> + <dt>{{domxref("SubtleCrypto.wrapKey()")}}</dt> + <dd>安全でない環境での使用法 (transfer, storage) について、ラップされた対称鍵の {{jsxref("Promise")}} を返します。返されるラップされたバッファーは、引数に与えられた書式内にあり、与えられたアルゴリズムで与えられたラッピング鍵によりラップされた鍵を含みます。</dd> + <dt>{{domxref("SubtleCrypto.unwrapKey()")}}</dt> + <dd>引数に与えられたラップされた鍵に対応する {{domxref("CryptoKey")}} の {{jsxref("Promise")}} を返します。</dd> +</dl> + +<h2 id="Specifications" name="Specifications">仕様</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">仕様書</th> + <th scope="col">策定状況</th> + <th scope="col">備考</th> + </tr> + <tr> + <td>{{ SpecName('Web Crypto API', '#subtlecrypto-interface', 'SubtleCrypto') }}</td> + <td>{{ Spec2('Web Crypto API') }}</td> + <td>初期定義。</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの実装状況</h2> + + + +<p>{{Compat("api.SubtleCrypto")}}</p> + +<h2 id="See_Also" name="See_Also">関連情報</h2> + +<ul> + <li>{{domxref("Crypto")}} および {{domxref("Crypto.subtle")}}。</li> +</ul> |