Как стать автором
Обновить

Комментарии 7

Производительность Высокая на

Понятно на)

Надежность генератора не выше надежности seed. Допускается ли использование без явного задания seed, к слову?

В Go строгая типизация. Сказано на вход rand.NewChaCha8 передать массив [32]byte значит надо передать или код просто не соберется.

Обычно ругаю ваши статьи, но тут спасибо. И всё же пара замечаний:

  1. Seed обычно переводят как посев, а не как семя.

  2. Посев не должен быть переменной. Он или константа (тогда, когда это необходимо), или псевдослучайное число, вычитанное из /dev/urandom. В Go для этого есть хелпер crypto/rand.Read()

И немного душноты: на Linux рандом работает только если запущен rngd. Он вычитывает энтропию из доступных устройств (TPM, процессор (в них сейчас есть выделенная инструкция), virtio, если мы внутри виртуалки, и т.д.) и "закачивает" её в urandom. В крайнем случае есть сурогатная альтернатива в виде Haveged. Без них конечно ничего не ломается, но всё что "crypto" работает медленно, а псевдослучайные числа, скажем так, не совсем случайные.

Где это обычно переводят, как "посев"? Везде пишут "семя" (seeds - семена). Семя генерируемого мира, например.

вбейте в гугл оба варианта, вот те тысячи, где "посев", там и переводят, а те четыре, где "семена" (seed и seeds вообще-то слова разные и не заменяемые просто так, но в вашем мгимо видимо не проходили)

seed - в контексте генерации случайных чисел используют как исходную точку для генерации случайных чисел, каждое значение определяет всю цепочку случайных чисел. В таком контексте это буквально "семя". Посев тут очень сложно втиснуть. Если очень хочется, то можно и так

NewChaCha8(seed)

NewChaCha8 - посев
seed - семя

Хотя слишком аграрно на мой вкус :)

Зарегистрируйтесь на Хабре, чтобы оставить комментарий