![]() |
eXeL@B —› Программирование —› Небольшой TrueRNG |
Посл.ответ | Сообщение |
|
Создано: 08 января 2013 09:21 · Личное сообщение · #1 Хочу поделиться крайне простым и маленьким кодом генератора истинно случайных чисел. Это не ГПСЧ, это настоящий недетерминированный ГСЧ. Принцип работы ясен из комментариев к коду. Code:
Достоинства: простота, компактность, самая настоящая тру-случайность без движений мышкой, шумов звуковой карты и прочей сложной фигни. Недостатки: максимальная производительность - 1000 бит в секунду, аппаратная и архитектурная зависимость (только x86/amd64, случайность на виртуалках под вопросом). З.Ы. В голом виде запрещается использовать в крипто, используйте как один из многих источников энтропии для ГПСЧ. ----- PGP key ![]() |
|
Создано: 08 января 2013 12:11 · Личное сообщение · #2 ntldr пишет: Это не ГПСЧ, это настоящий недетерминированный ГСЧ Вот вы бедные мучаетесь, свизданули бы уже код с Delphi Randomize и не парились. ntldr пишет: случайность на виртуалках под вопросом как и её роботаспособность зависло на глухо программа с таким кодом. ----- Чтобы правильно задать вопрос, нужно знать большую часть ответа. Р.Шекли. ![]() |
|
Создано: 08 января 2013 12:58 · Личное сообщение · #3 |
|
Создано: 08 января 2013 13:57 · Личное сообщение · #4 |
|
Создано: 08 января 2013 14:00 · Личное сообщение · #5 ClockMan пишет: Вот вы бедные мучаетесь, свизданули бы уже код с Delphi Randomize и не парились. закусывать надо. ![]() |
|
Создано: 08 января 2013 14:59 · Личное сообщение · #6 TryAga1n пишет: http://www.cracklab.narod.ru/doc/rand.htm Судя по году статьи и то что в Randomize используется GetSystemTime видать старая версия Delphi,в новой идёт получения числа через QueryPerformanceCounter,такчто вы дедушкаTryAga1n устарели. Gideon Vi пишет: закусывать надо. А вам занюхивать. ----- Чтобы правильно задать вопрос, нужно знать большую часть ответа. Р.Шекли. ![]() |
|
Создано: 08 января 2013 15:30 · Личное сообщение · #7 Code:
Вашь код большая ошибка... Вы вызываете в начале unsigned __int64 t0 = __rdtsc(); потом t0 = __rdtsc() - t0; а вы знаете что значение в вашем коде будут вальвироватся в пределе одного значения(старый трюк на детект отладчика измерения тиков) ну а дальше timeGetTime(сколько миллисекунд прошло с момента запуска ОС) это вообще упрастит нам задачу а дальше как http://www.cracklab.narod.ru/doc/rand.htm. ----- Чтобы правильно задать вопрос, нужно знать большую часть ответа. Р.Шекли. ![]() |
|
Создано: 08 января 2013 15:40 · Личное сообщение · #8 Вообще говоря, не уловил скептицизма. Во-первых, антиотладка-это замер выполнения чистого кода, который в идеале не переключается. Здесь же явно переключения будут из-за спячки. Во-вторых, даже если и есть гарантия, что разница будет, скажем, от 1 и 1000, никаких предположений по поводу ксора всех битов ты не сделаешь. Хотя бы ввиду того, что весь большой интервал сводится к 1 биту. timeGetTime же в самом генераторе практически не участвует, а нужно скорее просто для того, чтобы прождать достаточный промежуток времени, чтобы интервал разницы был побольше. З.Ы. Что же касается ранда-зная начальное значение и алгоритм ты можешь найти все последующие значения. В данном случае это не применимо (поэтому это и не ГПСЧ), посему аналогию с рандом не совсем понимаю. ![]() |
|
Создано: 08 января 2013 16:31 · Личное сообщение · #9 Ну кое-какие предположения сделать все-таки можно. Например, выделить факторы, влияющие на генратор. Это будут ГЧ и шедулер ОС. Минимизировать влияние второго можно регулируя приоритеты. Для первого труднее - нужно добиться стабильного температурного режима. А возможно и электромагнитного фона. Опять же, что делать с эмулируемыми средами? В случае железного тру ГСЧ никакие пляски не помогут. Низкую скорость можно компенсировать использованием сильной крипты и положительной связью от самого ГСЧ, домешивая время от времени новые данные. ----- старый пень ![]() |
|
Создано: 08 января 2013 19:46 · Личное сообщение · #10 |
|
Создано: 08 января 2013 21:15 · Личное сообщение · #11 Мда. Никто кроме арчера попросту не понял как оно работает. Учите матчасть господа, что такое системный таймер и что такое time stamp counter. Я объяснять не буду. Топик можно закрывать. ----- PGP key ![]() |
![]() |
eXeL@B —› Программирование —› Небольшой TrueRNG |
Эта тема закрыта. Ответы больше не принимаются. |