Come sappiamo, il Mersenne Twister is not crytographically secure:Esiste un CSPRNG C++ 11?
Mersenne Twister non è crittograficamente sicuro. (MT si basa su una ricorsione lineare. Qualsiasi numero di sequenza pseudocasuale generato da una ricorsività lineare è insicuro, poiché da sufficientemente lungo subsequencje delle uscite, si può prevedere il resto delle uscite.)
Ma molte fonti, come Stephan T. Lavavej e anche this website. Il consiglio è quasi sempre (testualmente) per utilizzare il Mersenne Twister come questo:
auto engine = mt19937{random_device{}()};
vengono in diversi gusti, come l'utilizzo di std::seed_seq
o complicati modi di manipolare std::tm
, ma questo è l'approccio più semplice.
Anche se std::random_device
is not always reliable:
std::random_device
può essere attuata in termini di un motore numero pseudo-casuale definito dall'implementazione se una sorgente non deterministica (ad esempio un dispositivo hardware) non è disponibile per l'implementazione. In questo caso, ogni oggettostd::random_device
può generare la stessa sequenza numerica.
Il /dev/urandom
vs /dev/random
dibattito rages on.
Ma mentre la libreria standard fornisce una buona raccolta di PRNG, non sembra fornire alcun CSPRNG. Preferisco attenermi alla libreria standard piuttosto che usare POSIX, intestazioni solo Linux, ecc. È possibile manipolare il Mersenne Twister per renderlo crittograficamente sicuro?
Per downsoter, come posso migliorare la mia domanda? – user5287986
Not downvoter (in realtà upvoted), ma penso che dovresti rendere i link cliccabili. – dandan78
* Il Mersenne Twister può essere manipolato per renderlo crittograficamente sicuro? * No. –