2017-07-20 2 views
1

Ich mag würde wissen, ob es einen Unterschied zwischen diesen beiden Punkten:PRNG Verkettung

  • ein PRNG 256 Bit
  • ein PRNG Erzeugung 8 mal 32 Bits zu erzeugen und sie

verketten In der Theorie glaube ich nicht, dass es einen Unterschied gibt, aber mit einem PRNG, der nicht optimal sein könnte. Welche bevorzugen Sie und warum?

+1

Meinst du einen [CSPRNG] (https://en.wikipedia.org/wiki/Cryptographically_secure_pseudorandom_number_generator) (Cryptographically Secure Psuedo Zufallsgenerator)? – zaph

+1

Im Wesentlichen gibt es keinen Unterschied. Im Allgemeinen hängt die Vorhersagbarkeit eines PRNG mehr von der Anzahl der Bits ab, die er verwendet, um seinen Zustand aufrechtzuerhalten. Zum Beispiel verwendet RC4 ein Zustandsarray von 2048 Bits (256 Bytes), erzeugt jedoch bei jeder Iteration 8 Bits, während die Funktion "rand()" in glibc 31 Zustandsbits verwendet und 31 Bits bei jeder Iteration ausgibt. –

Antwort

0

Wenn Sie 256 Bit benötigen, sollten Sie mit Option eins gehen und die zufälligen Bytes auf einmal berechnen.

Ein PRNG berechnet normalerweise seine zufälligen Daten in Blöcken, die fast immer größer als 32 Bits sind. Wenn Sie also 32-mal 8-mal anfordern, muss der RNG a) mehr Berechnungen durchführen und b) Zufallsdaten löschen, die berechnet wurden, aber nicht von Ihnen angefordert wurden.

Dies kann zu einem Sicherheitsproblem werden, wenn Sie dies oft (Millionen von Malen und mehr) tun und den PRNG nicht neu seeden können.