From 33058f2b292b3a581333bdfb21b8f671898c5060 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:40:17 -0500 Subject: initial commit --- files/ja/web/api/subtlecrypto/digest/index.html | 145 ++++++++++++++++++++++++ files/ja/web/api/subtlecrypto/index.html | 81 +++++++++++++ 2 files changed, 226 insertions(+) create mode 100644 files/ja/web/api/subtlecrypto/digest/index.html create mode 100644 files/ja/web/api/subtlecrypto/index.html (limited to 'files/ja/web/api/subtlecrypto') 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 +--- +

{{APIRef("Web Crypto API")}}{{SecureContext_header}}

+ +

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

+ +

引数として、使用するダイジェストアルゴリズムの識別子とダイジェスト値の元となるデータを受け取ります。ダイジェスト値で解決される {{jsxref("Promise")}} を返します。

+ +

構文

+ +
const digest = crypto.subtle.digest(algorithm, data);
+
+ +

引数

+ + + +

返値

+ + + +

対応しているアルゴリズム

+ +

ダイジェストアルゴリズムは 暗号ハッシュ関数 とも呼ばれ、任意の大きなデータブロックを固定サイズの出力 (通常は入力よりもはるかに短い出力) に変換します。暗号化にはさまざまな用途があります。

+ +

SHA-1

+ +

このアルゴリズムは FIPS 180-4, section 6.1 で定義されており、160 bit 長の出力を生成します。

+ +
+

警告: このアルゴリズムは現在脆弱であると見なされているため、暗号化アプリケーションには使用しないでください。

+
+ +

SHA-256

+ +

このアルゴリズムは FIPS 180-4, section 6.2 で定義されており、256 bit 長の出力を生成します。

+ +

SHA-384

+ +

このアルゴリズムは FIPS 180-4, section 6.5 で定義されており、384 bit 長の出力を生成します。

+ +

SHA-512

+ +

このアルゴリズムは FIPS 180-4, section 6.4 で定義されており、512 bit 長の出力を生成します。

+ +
+

ヒント: キー付きハッシュメッセージ認証コード (HMAC), の作成方法をここで探している場合は、代わりに SubtleCrypto.sign() を使用する必要があります。

+
+ +

+ +

基本的な例

+ +

この例では、メッセージをエンコードし、 SHA-256 ダイジェスト値を計算して、ダイジェスト長を記録します:

+ +
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);
+
+ +

ダイジェスト値を16進文字列に変換する

+ +

ダイジェストはArrayBufferとして返されますが、比較および表示のために、ダイジェスト値は多くの場合16進文字列として表されます。 この例では、ダイジェストを計算し、ArrayBufferを16進文字列に変換します:

+ +
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);
+
+ +

仕様書

+ + + + + + + + + + + + + + + + +
仕様書状態備考
{{SpecName('Web Crypto API', '#dfn-SubtleCrypto-method-digest', 'SubtleCrypto.digest()')}}{{Spec2('Web Crypto API')}}初回定義
+ +

ブラウザーの互換性

+ + + +

{{Compat("api.SubtleCrypto.digest")}}

+ +
+

Chrome 60 では、 TLS 接続出ない場合に crypto.subtle を無効化する機能が追加されました。

+
+ +

関連情報

+ + 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 +--- +

{{APIRef("Web Crypto API")}}

+ +

SubtleCrypto インターフェイスは、暗号プリミティブのセットを表します。これは、window コンテキスト ({{domxref("Window.crypto")}}) 内で利用可能な {{domxref("Crypto.subtle")}} プロパティを通して利用できます。

+ +
+

仕様書より引用 (拙訳): "開発者は、SubtleCrypto インターフェイスを使用する際に、提供される様々なアルゴリズムの設計と実装の両面でセキュリティに関わる問題に注意を払うことが期待されます。生のアルゴリズムは、その使用に必要とされる独自のセキュリティパラメーターとコンポジションを表す多様なプロトコルとアプリケーションの実装において、開発者に最大限の柔軟性を許すために提供されます。"

+
+ +

プロパティ

+ +

このインターフェイスはどのプロパティも定義または継承しません。

+ +

メソッド

+ +

このインターフェイスはどのメソッドも継承しません。

+ +
+
{{domxref("SubtleCrypto.encrypt()")}}
+
引数に与えられた平文テキストおよびアルゴリズム、鍵に対応する暗号化されたデータの {{jsxref("Promise")}} を返します。
+
{{domxref("SubtleCrypto.decrypt()")}}
+
引数に与えられた暗号化されたテキストおよびアルゴリズム、鍵に対応する平文データの {{jsxref("Promise")}} を返します。
+
{{domxref("SubtleCrypto.sign()")}}
+
引数に与えられたテキストおよびアルゴリズム、鍵に対応する署名の {{jsxref("Promise")}} を返します。
+
{{domxref("SubtleCrypto.verify()")}}
+
引数に与えられた署名が、同じく引数に与えられたテキストおよびアルゴリズム、鍵と一致するかどうかを示す {{jsxref("Boolean")}} 値の {{jsxref("Promise")}} を返します。
+
{{domxref("SubtleCrypto.digest()")}}
+
引数に与えられたアルゴリズムとテキストから生成されたダイジェストの {{jsxref("Promise")}} を返します。
+
{{domxref("SubtleCrypto.generateKey()")}}
+
引数に与えられたアルゴリズム、抽出可能性、使用法と一致する、対称アルゴリズムでは新たに生成された {{domxref("CryptoKey")}} の {{jsxref("Promise")}} を、非対称アルゴリズムでは 2 個の新たに生成された鍵を含む {{domxref("CryptoKeyPair")}} の {{jsxref("Promise")}} を返します。
+
{{domxref("SubtleCrypto.deriveKey()")}}
+
引数に与えられたマスターキーと特定のアルゴリズムによりもたらされる、新たに生成された {{domxref("CryptoKey")}} の {{jsxref("Promise")}} を返します。
+
{{domxref("SubtleCrypto.deriveBits()")}}
+
引数に与えられたマスターキーと特定のアルゴリズムによりもたらされる、疑似乱数ビットの新たに生成されたバッファーの {{jsxref("Promise")}} を返します。
+
{{domxref("SubtleCrypto.importKey()")}}
+
引数に与えられた書式およびアルゴリズム、生の鍵データ、使用法、抽出可能性に対応する {{domxref("CryptoKey")}} の {{jsxref("Promise")}} を返します。
+
{{domxref("SubtleCrypto.exportKey()")}}
+
要求された書式内の鍵を含むバッファーの {{jsxref("Promise")}} を返します。
+
{{domxref("SubtleCrypto.wrapKey()")}}
+
安全でない環境での使用法 (transfer, storage) について、ラップされた対称鍵の {{jsxref("Promise")}} を返します。返されるラップされたバッファーは、引数に与えられた書式内にあり、与えられたアルゴリズムで与えられたラッピング鍵によりラップされた鍵を含みます。
+
{{domxref("SubtleCrypto.unwrapKey()")}}
+
引数に与えられたラップされた鍵に対応する {{domxref("CryptoKey")}} の {{jsxref("Promise")}} を返します。
+
+ +

仕様

+ + + + + + + + + + + + + + +
仕様書策定状況備考
{{ SpecName('Web Crypto API', '#subtlecrypto-interface', 'SubtleCrypto') }}{{ Spec2('Web Crypto API') }}初期定義。
+ +

ブラウザーの実装状況

+ + + +

{{Compat("api.SubtleCrypto")}}

+ +

関連情報

+ + -- cgit v1.2.3-54-g00ecf