Jump to content
    

Генератор случайных чисел на STM32

On 5/10/2024 at 5:41 PM, mplata said:

А если после ксора будут одинаковые ключи? 

Вероятность этого очень мала..

Share this post


Link to post
Share on other sites

Just now, blackfin said:

У xor'а нет никаких ключей. Это булева операция - "исключающее или": a = b^c.

Я про то что мы ксорим две части ключа и получаем половинный ключ (нужной длины).  Затем с новым ключом делаем тоже самое. И так далее. Так вот не получится ли что в новой отксоренной последовательности встретятся одинаковые ключи? 

Share this post


Link to post
Share on other sites

On 5/10/2024 at 5:45 PM, mplata said:

Я про то что мы ксорим две части ключа и получаем половинный ключ (нужной длины).  Затем с новым ключом делаем тоже самое. И так далее. Так вот не получится ли что в новой отксоренной последовательности встретятся одинаковые ключи? 

Вероятность такого совпадения равна: 2128.

Share this post


Link to post
Share on other sites

1 minute ago, blackfin said:

Вероятность такого совпадения равна: 2128.

А в SHA-3 эта вероятность получается 2^-256? Неужели нет алгоритма в котором первые 10^8 не повторяются гарантированно?

Share this post


Link to post
Share on other sites

On 5/10/2024 at 5:51 PM, mplata said:

А в SHA-3 эта вероятность получается 2^-256?

Да, если использовать все 256 бит.

 

On 5/10/2024 at 5:51 PM, mplata said:

Неужели нет алгоритма в котором первые 10^8 не повторяются гарантированно?

В любом поле Галуа GF(2^N) на основе примитивного полинома степени N первые 2^N не повторяются гарантированно.

Для N = 28 это дает период повторения примерно равный: 2.68*10^8.

Share this post


Link to post
Share on other sites

27 minutes ago, blackfin said:

Да, если использовать все 256 бит.

 

В любом поле Галуа на основе примитивного полинома степени N первые 2^N-1 не повторяются гарантированно.

Для N = 28 это дает период повторения: 2.68*10^8.

А есть где то почитать про это? И примеры построения таких последовательностей. 

Share this post


Link to post
Share on other sites

On 5/10/2024 at 6:33 PM, mplata said:

А есть где то почитать про это? И примеры построения таких последовательностей. 

Р. Блейхут, "Теория и практика кодов, контролирующих ошибки", Мир, 1986.

Share this post


Link to post
Share on other sites

57 минут назад, mplata сказал:

А в SHA-3 эта вероятность получается 2^-256? Неужели нет алгоритма в котором первые 10^8 не повторяются гарантированно?

Выдели из 28 из 128 бит на счетчик(1,2,...100000000), а остальные 100 бит на абсолютно любое случайное число и повторений не предвидится

Share this post


Link to post
Share on other sites

если код генерируется в одном месте как страховка запоминать те коды которые уже были заданы. коллеги делали хешем и особо не заморачивались

Share this post


Link to post
Share on other sites

13 часов назад, blackfin сказал:

Для N = 28 это дает период повторения примерно равный: 2.68*10^8.

Что примерно на 100 десятичных порядков меньше чем у "Вихря Мерсенна".  :wink:

14 часов назад, blackfin сказал:

Вероятность такого совпадения равна: 2128.

Сомнительное утверждение. Чем оно обосновано?

Share this post


Link to post
Share on other sites

On 5/11/2024 at 7:38 AM, jcxz said:

Что примерно на 100 десятичных порядков меньше чем у "Вихря Мерсенна".

Это не инженерный подход.

Грамотное решение любой инженерной задачи подразумевает оптимальное использование ресурсов. Не нужна никакая избыточность.

Нужно использовать ровно столько ресурсов, сколько требуется для решения технической задачи. Ни больше ни меньше.

И 100 десятичных порядков здесь явно не нужны.

Share this post


Link to post
Share on other sites

49 минут назад, blackfin сказал:

Это не инженерный подход.

Грамотное решение любой инженерной задачи подразумевает оптимальное использование ресурсов. Не нужна никакая избыточность.

Нужно использовать ровно столько ресурсов, сколько требуется для решения технической задачи. Ни больше, не меньше.

И 100 десятичных порядков здесь явно не нужны.

Не понятно, что вообще нужно топикстартеру.

Edited by A.V.Avtomat

Share this post


Link to post
Share on other sites

46 минут назад, blackfin сказал:

Это не инженерный подход.

Грамотное решение любой инженерной задачи подразумевает оптимальное использование ресурсов. Не нужна никакая избыточность.

Нужно использовать ровно столько ресурсов, сколько требуется для решения технической задачи. Не больше, не меньше.

Грамотным является хотя бы прочитать то, что пишут оппоненты. А вы видимо даже не читали то, что я предложил.

Если бы прочитали, то уяснили бы что:

Цитата

Вихрь Мерсенна генерирует псевдослучайные последовательности чисел с периодом равным одному из простых чисел Мерсенна, отсюда этот алгоритм и получил своё название и обеспечивает быструю генерацию высококачественных по критерию случайности псевдослучайных чисел.

Т.е. - период 4,3•106001 (о котором я писал) - это не константа. И можно выбрать свой период, наиболее удобный. Из ряда простых чисел Мерсенна. Ряд этот имеется по приведённой мною ссылке. Например в нём есть число = 170141183460469231731687303715884105727. (что даёт разрядность = ln(170141183460469231731687303715884105727)/ln(2) = ~127 бит).

Т.е. - реализуем Вихрь Мерсенна с базой = 170141183460469231731687303715884105727 и получаем период = ~2^127. И этот период математически обоснован, а не голословное утверждение.

ТСу 2^127 вроде как - вполне достаточно.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...