Fonction linéaire congruentielle


Cette fonction est basée sur un générateur de nombres pseudo-aléatoires dit à congruence linéaire. C'est l'algorithme utilisé pour la fonction rand( ) de la librairie standard de C. On y ajoute une étape pour combiner les données de la clef au générateur, et nous obtenons cette fonction.





 inline unsigned 
 HashLinearCongruential(const unsigned char *buffer, 
                        int size)
  {
   unsigned h = 0;

   for (int i=0; i<size; i++)
    h = ( h * 1103515245u ) + 12345u + buffer[i]; 

   return h;
  }




Cette fonction est assez bonne car le générateur de nombres pseudo-aléatoires qu'on y retrouve est aussi « assez bon ». Ce type de générateur est toutefois considéré comme étant « faible » par les experts en génération de nombres pseudo-aléatoires et très certainement insuffisant pour toute application de type cryptographique.




( steven.pigeon@videotron.ca )