RandomSource.getRandomValues()
Baseline
Widely available
This feature is well established and works across many devices and browser versions. Itâs been available across browsers since иÑÐ»Ñ 2015 г..
ÐеÑод RandomSource.getRandomValues() позволÑÐµÑ Ð²Ð°Ð¼ полÑÑаÑÑ ÐºÑипÑогÑаÑиÑеÑки ÑÑойкие ÑиÑла. ÐаÑÑив, пеÑеданнÑй как паÑамеÑÑ, заполнÑеÑÑÑ ÑлÑÑайнÑми ÑиÑлами (ÑлÑÑайнÑми в кÑипÑогÑаÑиÑеÑком ÑмÑÑле).
ÐÐ»Ñ Ñого, ÑÑÐ¾Ð±Ñ Ð³Ð°ÑанÑиÑоваÑÑ Ð´Ð¾ÑÑаÑоÑнÑÑ Ð¿ÑоизводиÑелÑноÑÑÑ, ÑеализаÑии иÑполÑзÑÑÑ Ð½Ðµ наÑÑоÑÑий генеÑаÑÐ¾Ñ ÑлÑÑайнÑÑ ÑиÑел (RNG, en - Random Number Generator), а генеÑаÑÐ¾Ñ Ð¿Ñевдо-ÑлÑÑайнÑÑ ÑиÑел, коÑоÑÐ¾Ð¼Ñ Ð¿ÑедоÑÑавлено наÑалÑное зеÑно (wiki - https://en.wikipedia.org/wiki/Random_seed) Ñ Ð´Ð¾ÑÑаÑоÑной ÑнÑÑопией (http://cryptography.ru/ref/ÑнÑÑопиÑ). РеализаÑÐ¸Ñ Ð³ÐµÐ½ÐµÑаÑоÑа пÑевдо-ÑлÑÑайнÑÑ ÑиÑел (PRNG, en - PseudoRandom Number Generator) оÑлиÑаеÑÑÑ Ð¾Ñ Ð´ÑÑÐ³Ð¸Ñ ÑеализаÑий RNG, но она болÑÑе Ð¿Ð¾Ð´Ñ Ð¾Ð´Ð¸Ñ Ð´Ð»Ñ Ð¸ÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð² кÑипÑогÑаÑии. РеализаÑии Ñакже ÑÑебÑÑÑ Ð¸ÑполÑзование наÑалÑного зеÑна Ñ Ð´Ð¾ÑÑаÑоÑной ÑнÑÑопией, как иÑÑоÑник ÑиÑÑемно-ÑÑовневой ÑнÑÑопии.
СинÑакÑиÑ
cryptoObj.getRandomValues(typedArray);
ÐаÑамеÑÑÑ
typedArray-
ЦелоÑиÑленнÑй маÑÑив
TypedArray, напÑимеÑInt8Array,Uint8Array,Uint16Array,Int32Array, илиUint32Array. ÐÑе ÑлеменÑÑ Ð¼Ð°ÑÑива замеÑаÑÑÑÑ ÑлÑÑайнÑми ÑиÑлами.
ÐÑклÑÑениÑ
- ÐÑклÑÑение
QuotaExceededErrorDOMExceptionвÑбÑаÑÑваеÑÑÑ ÐµÑли запÑоÑÐµÐ½Ð½Ð°Ñ Ð´Ð»Ð¸Ð½Ð° болÑÑе Ñем 65536 байÑ.
ÐÑимеÑ
/* ÐÑедполагаеÑÑÑ ÑÑо ÑÑнкÑÐ¸Ñ window.crypto.getRandomValues доÑÑÑпна */
var array = new Uint32Array(10);
window.crypto.getRandomValues(array);
console.log("ÐаÑе ÑÑаÑÑливое ÑиÑло:");
for (var i = 0; i < array.length; i++) {
console.log(array[i]);
}
СпеÑиÑикаÑии
| Specification |
|---|
| Web Cryptography Level 2 > # Crypto-method-getRandomValues > |
СовмеÑÑимоÑÑÑ Ñ Ð±ÑаÑзеÑами
СмоÑÑиÑе Ñакже
Window.cryptoÑÑÐ¾Ð±Ñ Ð¿Ð¾Ð»ÑÑиÑÑ Ð¾Ð±ÑекÑCrypto.Math.random, не кÑипÑогÑаÑиÑеÑкий ÑпоÑоб полÑÑÐµÐ½Ð¸Ñ ÑлÑÑайнÑÑ ÑиÑел.