Spec-Zone.ru › Ruby 3.2

модуль SecureRandom

Интерфейс генератора случайных чисел.

Эта библиотека — интерфейс к генераторам случайных чисел, пригодным для генерации сессионных ключей в HTTP-куки и т. п.

Вы можете использовать эту библиотеку в своём приложении, подключив её:

require 'securerandom'

Она поддерживает следующие генераторы случайных чисел:

  • openssl

  • /dev/urandom

  • Win32

SecureRandom расширяется модулем Random::Formatter, который определяет следующие методы:

  • alphanumeric

  • base64

  • choose

  • gen_random

  • hex

  • rand

  • random_bytes

  • random_number

  • urlsafe_base64

  • uuid

Эти методы могут использоваться как методы класса SecureRandom, например, SecureRandom.hex.

Если генератор случайных чисел недоступен, поднимается исключение NotImplementedError.

Публичные методы класса

bytes(n) Показать исходный код
# File lib/securerandom.rb, line 42
def bytes(n)
  return gen_random(n)
end
gen_random(n)
Псевдоним для: gen_random_urandom

Приватные методы класса

gen_random_openssl(n) Показать исходный код
# File lib/securerandom.rb, line 48
def gen_random_openssl(n)
  @pid = 0 unless defined?(@pid)
  pid = $$
  unless @pid == pid
    now = Process.clock_gettime(Process::CLOCK_REALTIME, :nanosecond)
    OpenSSL::Random.random_add([now, @pid, pid].join(""), 0.0)
    seed = Random.urandom(16)
    if (seed)
      OpenSSL::Random.random_add(seed, 16)
    end
    @pid = pid
  end
  return OpenSSL::Random.random_bytes(n)
end
Также алиас: gen_random
gen_random_urandom(n) Показать исходный код
# File lib/securerandom.rb, line 63
def gen_random_urandom(n)
  ret = Random.urandom(n)
  unless ret
    raise NotImplementedError, "No random device"
  end
  unless ret.length == n
    raise NotImplementedError, "Unexpected partial read from random device: only #{ret.length} for #{n} bytes"
  end
  ret
end
Также алиас: gen_random

Ruby Core © 1993–2022 Yukihiro Matsumoto
Licensed under the Ruby License.
Ruby Standard Library © contributors
Licensed under their own licenses.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API