Сейчас на форуме: tyns777, JustLife, zds, 2nd, morgot, Rio, CDK123, tihiy_grom (+4 невидимых)

 eXeL@B —› Программирование —› PHP rand()
Посл.ответ Сообщение


Ранг: 467.7 (мудрец), 5thx
Активность: 0.270
Статус: Участник
Иной :)

Создано: 29 января 2009 13:04
· Личное сообщение · #1

Предыдущая тема была закрыта, поэтому создал новую.
Раньше подымался вопрос насколько рандомны числа в PHP, так вот оказалось всеже рандомность не совсем случайная.

www.xakep.ru/post/46797/default.asp

Вперед на онлайн козино

-----
Computer Security Laboratory




Ранг: 203.3 (наставник)
Активность: 0.220
Статус: Участник
UPX Killer -d

Создано: 29 января 2009 14:31
· Личное сообщение · #2

Странно. Вроде бы не секрет, что рандом на итерации (i+1) зависит от значения на шаге i.
Я откуда-то выковыривал функцию рандома на асме, всего строчек 10 да переменная для хранения предыдущего значения, на основе кот.вычисл.следующее зн-е.

-----
Я медленно снимаю с неё UPX... *FF_User*




Ранг: 251.3 (наставник), 81thx
Активность: 0.140.11
Статус: Участник

Создано: 29 января 2009 14:43
· Личное сообщение · #3

Писать брутфорсер на php это конечно жестоко...




Ранг: 355.4 (мудрец), 55thx
Активность: 0.320
Статус: Uploader
5KRT

Создано: 29 января 2009 15:26
· Личное сообщение · #4

Если кейгены на пхп бывают, то почему же не...

-----
Gutta cavat lapidem. Feci, quod potui. Faciant meliora potentes




Ранг: 251.3 (наставник), 81thx
Активность: 0.140.11
Статус: Участник

Создано: 29 января 2009 18:08
· Личное сообщение · #5

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




Ранг: 467.7 (мудрец), 5thx
Активность: 0.270
Статус: Участник
Иной :)

Создано: 29 января 2009 18:33
· Личное сообщение · #6

cppasm
imho это пример, а на чем уж реализовать, это дело второе.

-----
Computer Security Laboratory




Ранг: 3.8 (гость)
Активность: 0=0
Статус: Участник

Создано: 17 февраля 2009 09:40
· Личное сообщение · #7

А если не инициализировать эти [s]не[/s]случайные числа, т.е. использовать вот так:
$rand = mt_rand(1, 1000000);
то что как здесь обстоят дела с крипто устойчивостью ? и вообще каким способом генерируется первый член последовательности ?



Ранг: 52.1 (постоянный), 1thx
Активность: 0.020
Статус: Участник

Создано: 17 февраля 2009 11:33
· Личное сообщение · #8

Первый член - функция от времени, есть переменная rnd_seed, которую можно установить самому, последующие случайные члены получаются из линейных конгруэнтных последовательностей.
В большинстве web-движнов переменная rnd_seed устанавливается как-нибудь вроде time*999999, т.е. диапазон первоначальных значений rnd_seed божет быть приблизительной определен.
Если я ничего не путаю.



Ранг: 253.9 (наставник)
Активность: 0.130
Статус: Участник

Создано: 17 февраля 2009 17:48 · Поправил: Tim
· Личное сообщение · #9

то есть чтобы защититься, достаточно брать хэш от времени, а не само время? хм...
едит: гы, не прокатит ведь

-----
MicroSoft? Is it some kind of a toilet paper?




Ранг: 63.8 (постоянный), 2thx
Активность: 0.030
Статус: Участник

Создано: 18 февраля 2009 09:59
· Личное сообщение · #10

Tim

как по мне лучше просто писать свой make_seed() для srand с ксором на какою-то константу придуманную от балды или еще какой-то операцией... главное что бы не стандартно


 eXeL@B —› Программирование —› PHP rand()
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати