Puncte:0

Mod standard de a genera octeți pseudoaleatori la cerere

drapel in

Am considerat funcția de ieșire extensibilă (XOF) cu o sămânță aleatorie, dar se pare că ar trebui să specific lungimea de ieșire la început și să stochez întreaga ieșire. Nu știu de câți octeți voi avea nevoie în avans și nu vreau să stochez un șir foarte lung.

Am luat în considerare, de asemenea, o construcție ad-hoc cu stare folosind XOF care menține un contor de rulare. Mă întreb care este modul „standard” și eficient de a face acest lucru.

Paul Uszak avatar
drapel cn
Există o nuanță care nu este evidentă din titlul întrebării? De ce să nu faci doar lucrul standard: CSPRNG?
Maarten Bodewes avatar
drapel in
@PaulUszak Un lucru care ar putea fi o problemă este că multe *implementații* CSPRNG sunt însămânțate de sistem, pot fi reînsămânțate etc. Deci nu sunt de încredere pentru a genera aceiași biți tot timpul. Unele CSPRNG-uri pot specifica, de asemenea, o anumită dimensiune a vitezei, așa că există asta. Dar da, dacă este vorba doar despre obținerea de octeți sau numere întregi aleatorii: utilizați un CSPRNG.
Puncte:0
drapel my

Am considerat funcția de ieșire extensibilă (XOF) cu o sămânță aleatorie, dar se pare că ar trebui să specific lungimea de ieșire la început și să stochez întreaga ieșire.

Nu; standardul SHAKE XOF nu trebuie să știe din timp cât de mult poate genera o ieșire; nu există niciun motiv pentru care nu puteți continua să „strângeți” pentru a obține atâta rezultat cât aveți nevoie.

Acum, este posibil ca API-ul pentru biblioteca cripto pe care o utilizați să aibă o astfel de limitare (adică va genera întotdeauna toată ieșirea sa simultan și nu are nicio prevedere pentru a mai genera). Pe de altă parte, nu m-aș aștepta naiv la asta de la o bibliotecă - te-ai uitat să te asiguri că biblioteca ta nu are o funcție/API disponibilă „generare mai multe ieșiri” (eventual prin simpla apelare a „API-ului generare de ieșire” cu starea SHAKE)?

Myath avatar
drapel in
Mă uit la Python hashlib https://docs.python.org/3/library/hashlib.html și nu pare să aibă un astfel de API.
poncho avatar
drapel my
@Myath: Bănuiesc că apelarea shake.digest(length) de mai multe ori va genera părți consecutive ale rezultatului shake.
JamesTheAwesomeDude avatar
drapel cn
@poncho Din păcate, nu este cazul; Tocmai l-am testat. Se pare că @Myath va trebui să folosească o bibliotecă terță parte, cum ar fi [`pycryptodome`](https://pycryptodome.readthedocs.io/en/stable/src/hash/shake256.html) – nici standardul biblioteca și nici [`pyca/cryptography`](https://cryptography.io/en/latest/hazmat/primitives/cryptographic-hashes/#cryptography.hazmat.primitives.hashes.SHAKE256) acceptă această funcționalitate, în mod ciudat.

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.