RandomSource.getRandomValues()

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

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

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

構文

typedArray = cryptoObj.getRandomValues(typedArray);

引数

typedArray
整数値を基数とした TypedArrayInt8Array または Uint8Array, Int16Array, Uint16Array, Int32Array, Uint32Array。配列内のすべての要素は乱数で上書きされます。

返値

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

例外

このメソッドはエラーが発生すると例外を発行する可能性があります。

DOMException (name: QuotaExceededError)
リクエストした長さが 65536 バイトを超えた場合。

使用上の注意

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

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

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

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

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

仕様書

仕様書 状態 備考
Web Cryptography API 勧告 初回定義

ブラウザーの互換性

Update compatibility data on GitHub
デスクトップモバイル
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeAndroid 版 FirefoxAndroid 版 OperaiOSのSafariSamsung Internet
getRandomValues()Chrome 完全対応 11Edge 完全対応 12Firefox 完全対応 26IE 完全対応 11Opera 完全対応 15Safari 完全対応 6.1WebView Android 完全対応 ≤37Chrome Android 完全対応 18Firefox Android 完全対応 26Opera Android 完全対応 14Safari iOS 完全対応 6.1Samsung Internet Android 完全対応 1.0

凡例

完全対応  
完全対応

関連情報