Puncte:1

Cum să reproduci semințele în Generatorul de numere aleatorii, cum ar fi WELL, KISS etc

drapel cn

Sunt curios de Umplutura de seminte a generatorului de numere aleatorii.
(Sunt sigur că terminologia, umplutura semințelor, nu este corectă. Dacă cineva știe cuvântul potrivit, vă rog să-mi spuneți :) )

Ce înseamnă căptușeala semințele pe care le-am menționat?

Știți că generatorul de numere pseudo-aleatorie are nevoie de semințe pentru a-și face treaba corect. De exemplu, unul dintre cele mai faimoase RNG, mt19937, are nevoie de o singură sămânță.

Cu toate acestea, în Algoritmul KISS (George Marsaglia, 2011, versiunea pe 64 de biți), aveți nevoie doar de 2 semințe, cng și xs. În cazul în care Wichmann_hill, ai nevoie de 3 semințe, s1, s2, s3. În algoritmul WELL19937, ai nevoie 624 de semințe.

După părerea mea, este ușor să obțineți 1 sau 2 semințe. Dar, obținerea a 624 de semințe pentru WELL19937 ar fi dificilă.

Deci, cred că unii algoritmi ar implementa „Umplutura semințelor”, ceea ce înseamnă generarea unei semințe la semințe la cerere, cum ar fi SHA256. În cazul SHA, dacă mesajul de intrare nu se potrivește cu lungimea, generăm câteva mesaje care sunt numite Captuseala.

Ce vreau să întreb.

  1. Există o terminologie adecvată pentru „Umplutura semințelor” în Generatorul de numere aleatorii?

  2. Cum să „umpluți semințele”? Există vreun standard?

SAI Peregrinus avatar
drapel si
Acest site stackexchange este despre criptografie. Criptografia folosește generatoare de numere pseudoaleatoare pseudografice securizate din punct de vedere criptografic (CSPRNG), care nu preiau o sămânță externă repetabilă. Pentru un CSPRNG sigur, reproducerea semințelor TREBUIE să fie imposibilă.
TyeolRik avatar
drapel cn
@SAIPeregrinus Da. Știu că acest site este despre Criptografie. Și, de asemenea, Pseudo Număr Aleatoriu (Nu CSPRNG) este în legătură cu Criptografia. Pentru că, unul dintre cele mai faimoase manuale, Criptografia aplicată, Bruce Schneier, introduce generatorul clasic de numere pseudo-aleatorie, cum ar fi LCG, LFSR etc. Ok, atunci, dacă crezi că acest site nu este potrivit pentru a întreba, ați putea să îmi recomandați unde ar trebui să întreb?
SAI Peregrinus avatar
drapel si
Dacă întrebați despre programarea unui astfel de PRNG, veți transmite intrările cu orice metodă necesită limbajul folosit, de exemplu, treceți un pointer către o structură pentru o versiune C. Umplutura ar fi determinată de compilator și arhitectură. Ar fi potrivit pentru Stackoverflow.
SAI Peregrinus avatar
drapel si
Dacă întrebați cum să găsiți semințele din rezultatul PRNG, acest lucru este relevant aici, dar nu există un astfel de proces de umplutură.
TyeolRik avatar
drapel cn
@SAIPeregrinus Nu, nu cer să găsesc semințe de la ieșirile PRNG, care este ca Hash Collision. Ceea ce întreb este: **Cum să pun (multe) semințe adecvate?** Nu obținem 624 de semințe, ci manipulez semințe de la ONE SEED, care este aproape ca umplutura SHA.
SAI Peregrinus avatar
drapel si
Din parcurgerea hârtiei la (https://www.iro.umontreal.ca/~lecuyer/myftp/papers/lfsr04.pdf) se pare că sămânța este doar un vector de biți de stare inițială. Codul pare să susțină asta, deoarece init are un int*. Deci inițializați matricea de numere întregi (fără umplutură) la valorile pe care doriți să le utilizați ca semințe. Probabil folosește doar memcpy. Probabil este mai potrivit pentru stackexchange decât aici, dar codul din lucrarea respectivă este destul de greu de citit (fără nume clare de funcție/variabile), așa că s-ar putea să nu primești prea mult ajutor.
TyeolRik avatar
drapel cn
@SAIPeregrinus Am citit acea lucrare și, de asemenea, am [recodificat pe cont propriu](https://github.com/TyeolRik/rngset/blob/main/well.go) Dar, **de fapt nu întreb** despre codificare, dar **întrebând despre „ce este sămânța bună”**. După cum știți, în codul original, init are un ```int*``` care înseamnă doar introducerea utilizatorului. Dar, în lumea reală, așa cum am menționat, este dificil să obțineți „semințe bune”. Așa că întreb cum să produc semințe bune cu una sau două semințe... (fără CSPRNG, care este din /dev/random/ )
SAI Peregrinus avatar
drapel si
O sămânță bună este date uniform aleatorii. Ar trebui să aibă o entropie Shannon aproape de 1 bit/bit. Cel mai simplu mod de a obține acest lucru este să utilizați un RNG hardware care își albește ieșirea cu un CSPRNG, orice alt design va fi mai rău pentru securitate sau performanță. Dacă încercați să obțineți o sămânță repetabilă, de exemplu pentru simulări Monte Carlo, atunci doar salvați o parte din rezultatul dvs. csprng într-un fișier și utilizați orice RNG doriți cu el, deoarece nu aveți nevoie de securitate.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.