21. maj 2003 - 21:54Der er
37 kommentarer og 1 løsning
Generering af truely random data.
Er det mugluigt at generere en truely random streng af bogstaver rent eletronisk? Det behøver ikke at være via matematik. Bare en måde at generere truely random data uden ekstra udstyr til PCen. I det her tilfælde er en 'standard' PC en med netkort, grafik kort og så vidre.
Mød TrackMan og Veo på Computerworld Cloud & AI Festival og hør, hvordan tech ændrer måden, vi træner og udvikler talent – fra skolebold til The Masters.
Hrrm. Nu ved jeg selvfølgelig ikke hvad du skal bruge det til, men du skal jo bare lige huske at du nok får et problem, hvis/når siden en dag bliver pillet ned, såååå..... I længden er det nok ikke den mest holdbare løsning ;) hehe
Og hvis jeg skal tro på følgende text fundet på random.org
True random numbers are typically generated by sampling and processing a source of entropy outside the computer. A source of entropy can be very simple, like the little variations in somebody's mouse movements or in the amount of time between keystrokes. In practice, however, it can be tricky to use user input as a source of entropy. Keystrokes, for example, are often buffered by the computer's operating system, meaning that several keystrokes are collected before they are sent to the program waiting for them. To the program, it will seem as though the keys were pressed almost simultaneously.
Hvis du kun skal bruge et nummer en gang imellem og har en godt brugt PC, kan du tilfældigt (med random) vælge en fil fra din internet cache, xor den og bruge værdien som dit tal. Det der kommer ind fra internettet må betragtes som kaos og derfor ret tilfældigt specielt efter du xor en hel fil.
d:\ny mappe\c\keygen\keygen-main.cpp: In function `int main(int, char **)': d:\ny mappe\c\keygen\keygen-main.cpp:8: parse error before character 0240 d:\ny mappe\c\keygen\keygen-main.cpp: At top level: d:\ny mappe\c\keygen\keygen-main.cpp:19: parse error before `;' d:\ny mappe\c\keygen\keygen-main.cpp:19: syntax error before `++'
Vær iøvrigt opmærksom på at du skal have konverteret de random int's til at passe til din sammenhæng. Det er ikke sikkert at de kan bruges umiddelbart. Måske kan du kun bruge 1 eller 4 bit fra hver int.
Hrm..ok, hvis fuctionen jeg postede skulle omsrives så den kommer til at bruge den teknik hvordan kommer den til at se ud? Og hvis den skal bruges sammen med den fuction du postede tidligere hvordan kommer programmet til at se ud.
if(strcmp(argv[1],"-e") == 0){ cout<<"Enter plaintext: "; cin.getline(plaintext, 255); cout << "Press some random keys" << endl; while(n<100) { getch(); int t2 = GetTickCount(); a[n] = t2 - t1; t1 = t2; n++; } for(int i=0;i<50;i++) { int tmp = ((a[2*i] % 16) << 4) | (a[2*i+1] % 16); key[i] = 'A' + tmp % 26;} for(i = 0; plaintext[i] != '\0'; i++) plaintext[i] = toupper(plaintext[i]); //for(i = 0; key[i] != '\0'; i++) // key[i] = toupper(key[i]); otp_enc(plaintext,key); return 0;} Tror jeg ikke fordi den key jeg får ser sådan her ud: PUSIEKDIIZOKMQCIUOAEWMMOAIISGYAUEQQEAMQIWKAOYGKKAI??TESTSTRING Det giver mig to problemer: 1)Jeg vil kun lave en key der er så lang som strengen der er intastet, jeg prøvede at bruge strlen() i begge lykker, men så fik jeg bare junk data med i keyen. 2) ??TESTSTRING skal helst ikke være i keyen, fordi TESTSTRING var i telfældet her hvad jeg indtastede, og fordi jeg vil have en ren bogstav key så de to ? generer mig.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.