std/sysrand
Источник Изменить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
См. также
Импорты
- 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