Newsgroup: it.comp.os.linux.development
Titolo: perche'?

dopo circa un 200 iterazioni, il programma rallenta (di brutto). come mai?
dipende dall'implementazione di /dev/random?
#include <iostream>
#include <fstream>
using namespace std;
int main (void){
 ifstream input("/dev/random");
 ofstream output("./rand.out");
 long i = 0;
 while (1){
  input.read((void*)&i, sizeof(long));
  cout << i << endl;
  output << i << endl;
  if (i == 0)
   break;
 }
}
--
PGP public key available
____ __         __,_      __  _____
\  _\_ \  ___ _/ / /\  /\/  \/ / _/ It is better to reign in Hell
 \  _ \ \/ _ '/ , |\ VV / / / / _/ Than serve in Heaven.- MILTON
  \_,_/\_\_,_/_/|_| \__/\__/_/_/  ICQ  : 75043214
      -- the one and only --     Mail : 
blak...@tiscalinet.it
The UNIX Guru's View of Sex:    Home : 
web.tiscalinet.it/blakwolf
$unzip;strip;touch;finger;mount;fsck;more;yes;umount;sleep

dipende dall'implementazione di /dev/random?
Prova con urandom. Meno casuale, ma piu` veloce.
-- 
Ci sentiamo  |  Remigio Zedda
             |  
remi...@tiscalinet.it
ciao Remigio |                    kernel 2.2.13 su Slack 7.0

rez <r...@mendo.300_A> wrote in message 8jo04n$uqf$1...@pegasus.tiscalinet.it...
| On Sun, 2 Jul 2000 19:19:42 +0200 BlakWolf wrote:
| >dopo circa un 200 iterazioni, il programma rallenta (di brutto). come
mai?
| >dipende dall'implementazione di /dev/random?
|
| Prova con urandom. Meno casuale, ma piu` veloce.
se avessi voluto spiegazioni su urandom, le avrei chieste, no? :-)


se avessi voluto spiegazioni su urandom, le avrei chieste, no? :-)
Me l'aspettavo, avrei dovuto evitare di postare perche' in C sono
ancora troppo indietro, sono appena all'inizio:-(
Cmq mi sono anche espresso male: proponevo lo scambio random-urandom a
mo' di test, non per risolverlo, ma per cambiare l'algoritmo:-(


rez <r...@mendo.300_A> wrote in message 8jq6mh$ktq$1...@pegasus.tiscalinet.it...
| On Mon, 3 Jul 2000 07:25:38 +0200 BlakWolf wrote:
| >|Prova con urandom. Meno casuale, ma piu` veloce.
| >se avessi voluto spiegazioni su urandom, le avrei chieste, no? :-)
|
| Me l'aspettavo, avrei dovuto evitare di postare perche' in C sono
| ancora troppo indietro, sono appena all'inizio:-(
in bokka a me, allora!
| Cmq mi sono anche espresso male: proponevo lo scambio random-urandom a
| mo' di test, non per risolverlo, ma per cambiare l'algoritmo:-(
beh, e' logico che con rand, random e compagnia cio' non avviene...
volevo sapere il perche' con /dev/random le cose vanno cosi'...
--
PGP public key available


dipende dall'implementazione di /dev/random?
Si`. Leggi il sorgente e poi usa rand(3) o se proprio devi /dev/urandom.
-- 
ciao, |
Marco | * The Internet is full. Go away.  -- Joel Furr *
      | (Ri)scoprire fidonet: 
http://bbs.mi.linux.it

 wrote in message:
| Si`. Leggi il sorgente e poi usa rand(3) o se proprio devi /dev/urandom.
okay, fatto. ditemi cosa ne pensate di questo prog. Dovrebbe fornire abb.
imprevedibilita' del byte pool, pur non stressando il sistema. Errori?
#include <iostream>
#include <fstream>
using namespace std;
int main (void){
  ifstream i_urand("/dev/urandom");
  ifstream i_rand("/dev/urandom");
  ofstream output("./rand.out");
  long i = 0, count = 0, rcount = 0;
  unsigned long base = 0, seed = 0;
  // ogni volta che base e' divisore di seed, pesco da /dev/random
  // altrimenti da /dev/urandom
  // prendo 2 numeri casuali da /dev/random
  while(!seed){
    i_rand.read((void*)&seed, sizeof(long));
    seed = seed % 512;
  }
  while(!base){
    i_rand.read((void*)&base, sizeof(long));
    base = base % 1023 + seed;
  }
  seed = 0;
  while (count < 100000){
    i_rand.read((void*)&seed, sizeof(long));
    i_rand.read((void*)&seed, sizeof(long));
    if((seed % base)){
      i_urand.read((void*)&i, sizeof(long));
    } else {
      ++ rcount;
      i_rand.read((void*)&i, sizeof(long));
      output << "Rand"<< rcount<<" : ";
    }
    ++ count;
    output << i << endl;
  }
  return 0;
}
PGP public key available
--


imprevedibilita' del byte pool, pur non stressando il sistema. Errori?
Non c'e` motivo di usare /dev/random.


Marco d'Itri wrote:
| >okay, fatto. ditemi cosa ne pensate di questo prog. Dovrebbe fornire
abb.
| >imprevedibilita' del byte pool, pur non stressando il sistema. Errori?
| Non c'e` motivo di usare /dev/random.
se c'e', a qlcs servira', no? :)
Il fatto e' che random usa tutto il pool byte, urandom no. Se mi servono
valori il piu' imprevedibili possibile, devo usare /dev/random. Mi calano
le prestazioni: devo usare /dev/urandom. Letto (su sorgente, come da tuo
suggerimento) il meccanismo dei due device, ho proposto questa alternativa:
mixare in modo casuale i byte presi da urandom con quelli presi da random,
per aumentare l'imprevedibilita' di /dev/urandom.
riguardo al motivo, mi servono dei bytes, che leggo con una
ifstream.read((void*)my_data, sizeof(my_data));
e non degli interi, col random. la maniera piu' rapida in c++ per averli e'
definire
ifstream inp;
char *my_data;
my_data = new char[needed_length];
inp.read((void*)my_data, sizeof(my_data)); /* inp debitamente inizializzato
*/
come nel prog. di cui sopra. su usassi interi, dovrei leggerne x alla
volta, e se length fosse dispari uno a meta' e shiftarli nell'array... due
palle.
che ne dici della soluzione? c'e' un errore utilizzabile per predire i
bytes?
mi servono per criptare dei dati di una certa importanza, in pratica creo
delle coppie di chiavi SHA al volo, e le utilizzo per trasmettere dati, una
chiave ogni tot byte. per questo me ne servono tanti, velocemente e sicuri.
--
PGP public key available
____ __         __,_      __  _____
\  _\_ \  ___ _/ / /\  /\/  \/ / _/ It is better to reign in Hell
 \  _ \ \/ _ '/ , |\ VV / / / / _/ Than serve in Heaven.- MILTON
  \_,_/\_\_,_/_/|_| \__/\__/_/_/  ICQ  : 75043214
      -- the one and only --     Mail : 
blak...@tiscalinet.it


 wrote in message 8jv2p8| int main (void){
|   ifstream i_urand("/dev/urandom");
|   ifstream i_rand("/dev/urandom");
                    ^^^^^^^^^^^^^^^
ehm, mi e' scappata la u...
   ifstream i_urand("/dev/urandom");
   ifstream i_rand("/dev/random");
--
PGP public key available
The UNIX Guru's View of Sex:    Home : 
web.tiscalinet.it/blakwolf
