Ruperea generatorul de numere aleatoare congruential liniar

Ruperea generatorul de numere aleatoare congruential liniar
  • matematică
  • spargere
  • criptografie
  • Generator de numere aleatorii
  • numerele aleatoare

Pentru scopuri de formare, vreau să crape cel mai simplu prng.

Aceasta poate ajuta chiar și cei care nu știu despre generatorul congruente liniare sau despre prng, în principiu, pentru că întrebare într-o interpretare greșită a textului în limba engleză și un pic de matematica.

Pentru a vă pe scurt: Există un astfel de lucru ca un generator de numere pseudoaleatoare. și anume Randy, dacă este mai ușor. „Pseudo-aleatoare“, deoarece acestea nu sunt întâmplătoare, ci sunt similare cu cele. Unul dintre implementările generatorului:

În cazul în care Xn - este termenul n-lea a secvenței. Variabilele a, c și m - constante: a - coeficient, c - incrementare, m - modulul. X0 - valoarea inițială.

Condițiile mele de rupere:

1. Știm că generatorul este bazat pe un generator congruential liniar.
2. Nu știm a, c și m.
3. Putem obține toți termenii secvenței.
Obiectiv: Pentru a determina o, c, m (mai probabil).

Mai multe metode găsite în versiunea în limba engleză. Am nevoie de oricare dintre acestea, sau alte, nu știu.

Pe acest site rezolva această forță brută. Singurul lucru pe care nu este dat întreaga secvență, și orice alt membru. De aceea, după cum am înțeles, efectuat PowerMod nu este necesar. Întrebările acestei metode sunt următoarele:

1. Am înțeles corect că al doilea cod este pus în aplicare, deoarece primele două rezultate au dat afară, și avem nevoie de unul?
2. Problema aritmetică modulare: cum să obțineți că c = X2 - ((X1 * a)% m) (primul cod)?
3. De ce m <10*M_START?
4. Ce se întâmplă în al doilea cod?

Aici - algoritmul Plumstead lui. Și aici - algoritmul G. Marsaglia Vă rugăm să explicați care a știut din punct de vedere matematic ..