Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Crypto.getRandomValues() を更新 #5457

Merged
merged 3 commits into from
May 14, 2022
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
87 changes: 0 additions & 87 deletions files/ja/web/api/crypto/getrandomvalues/index.html

This file was deleted.

87 changes: 87 additions & 0 deletions files/ja/web/api/crypto/getrandomvalues/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
---
title: Crypto.getRandomValues()
slug: Web/API/Crypto/getRandomValues
tags:
- API
- Crypto
- Cryptography
- Encryption
- Integers
- メソッド
- Numbers
- Pseudorandom
- 擬似乱数
- 乱数
- リファレンス
- ウェブ暗号化 API
- getRandomValues
browser-compat: api.Crypto.getRandomValues
translation_of: Web/API/Crypto/getRandomValues
---
{{APIRef("Web Crypto API")}}

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

十分な性能を保証するために、実装は真に乱数発生器を使用しているのではないものの、十分なエントロピーを有する*シード値*を用いた擬似乱数発生器を使用しています。
擬似乱数発生器アルゴリズム (PRNG) は、{{Glossary("user agent", "ユーザーエージェント")}}によって異なる可能性がありますが、暗号化の目的には適しています。
実装にあたっては、システムレベルのエントロピー源のように、十分なエントロピーを持つシード値を使う必要があります。

`getRandomValues()` は `Crypto` インターフェイスで安全なコンテキスト外から使用することができる唯一のメンバーです。

## 構文

```js
getRandomValues(typedArray)
```

### 引数

- `typedArray`
- : 整数値ベースの {{jsxref("TypedArray")}} です。 {{jsxref("Int8Array")}}, {{jsxref("Uint8Array")}}, {{jsxref("Int16Array")}}, {{jsxref("Uint16Array")}}, {{jsxref("Int32Array")}}, {{jsxref("Uint32Array")}} の何れかです(ただし `Float32Array` や `Float64Array` では**ありません**)。
mfuji09 marked this conversation as resolved.
Show resolved Hide resolved
配列内のすべての要素は乱数で上書きされます。

### 返値

`typedArray` と同じ配列が渡されますが、その内容は新しく生成された乱数で置き換えられます。
`typedArray` はその場で変更され、コピーは行われないことに注意してください。

### 例外

- `QuotaExceededError`{{domxref("DOMException")}}
- : リクエストした長さが 65,536 バイトを超えた場合に発生します。

## 使用上の注意

暗号鍵を生成するために `getRandomValues()` 使用しないでください。代わりに {{domxref("SubtleCrypto.generateKey", "generateKey()")}} メソッドを使用してください。
これにはいくつかの理由があります。例えば、 `getRandomValues()` が安全なコンテキストで動作することが保証されていないことなどです。

ウェブ暗号仕様書では、エントロピーの最小値は規定されていません。
その代わりに、ユーザーエージェントは乱数を生成する際に、ユーザーエージェント自身に組み込まれた、よく定義された効率的な擬似乱数発生器を用いて、可能な限り最高のエントロピーを提供することが求められていますが、プラットフォーム固有の乱数関数、 Unix の `/dev/urandom` デバイス、または他のランダムまたは擬似乱数データのソースなど、外部の擬似乱数ソースから取得したシード値が用いられます。

## 例

```js
/* window.crypto.getRandomValues が利用可能であると想定 */

var array = new Uint32Array(10);
self.crypto.getRandomValues(array);

console.log("Your lucky numbers:");for (var i = 0; i < array.length; i++) {
console.log(array[i]);
}
```

## 仕様書

{{Specifications}}

## ブラウザーの互換性

{{Compat}}

## 関連情報

- [ウェブ暗号 API](/ja/docs/Web/API/Web_Crypto_API)
- {{domxref("Crypto")}} オブジェクトを取得する {{ domxref("Window.crypto") }}。
- {{jsxref("Math.random")}} 暗号学的に安全ではない乱数値。