Spec-Zone.ru › Nim

std/sysrand

Источник Изменить
Предупреждение: Этот модуль был добавлен в Nim 1.6. Если вы используете его для криптографических целей, имейте в виду, что до сих пор он не был проверен специалистами по безопасности, поэтому может быть небезопасным.

std/sysrand генерирует случайные числа из защищенного источника, предоставляемого операционной системой. Это криптографически безопасный генератор псевдослучайных чисел и должен быть достаточно непредсказуемым для криптографических применений, хотя его точное качество зависит от реализации ОС.

Платформы Реализация
Windows BCryptGenRandom
Linux getrandom
MacOSX SecRandomCopyBytes
iOS SecRandomCopyBytes
OpenBSD getentropy openbsd
FreeBSD getrandom freebsd
JS (Веб-браузер) getRandomValues
Node.js randomFillSync
Другие Unix-платформы /dev/urandom

На платформе Linux вызов getrandom syscall можно избежать (например, для платформ с ядром версии < 3.17), передав флаг компиляции -d:nimNoGetRandom. Если этот флаг передаётся, sysrand будет использовать /dev/urandom как и на любой другой POSIX-совместимой ОС.

Пример:

import std/sysrand
doAssert urandom(0).len == 0
doAssert urandom(113).len == 113
doAssert urandom(1234) != urandom(1234) # unlikely to fail in practice

См. также

  • Модуль random

Импорты

oserrors

Процедуры

proc urandom(dest: var openArray[byte]): bool {....raises: [], tags: [],
    forbids: [].}

Заполняет dest случайными байтами, подходящими для криптографического использования. Если вызов успешен, возвращает true.

Если dest пуста, urandom немедленно возвращает успех, не вызывая API базовой операционной системы.

Предупреждение: Код не был проверен экспертами по криптографии и предоставляется как есть без гарантий. Используйте на свой страх и риск. Для производственных систем рекомендуем запросить внешнюю проверку.
Источник Изменить
proc urandom(size: Natural): seq[byte] {.inline, ...raises: [OSError], tags: [],
    forbids: [].}
Возвращает случайные байты, подходящие для криптографического использования.
Предупреждение: Код не был проверен экспертами по криптографии и предоставляется как есть без гарантий. Используйте на свой страх и риск. Для производственных систем рекомендуем запросить внешнюю проверку.
Источник Изменить

© 2006–2024 Andreas Rumpf
Licensed under the MIT License.
https://nim-lang.org/docs/sysrand.html

Spec-Zone.ru

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