Outils pour utilisateurs

Outils du site


genalea_bbs

Warning: Undefined array key -1 in /home/clients/a4e6fc1ce1761b72982b805de0f418c4/web/python/mesrecettespython/inc/html.php on line 1458

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
genalea_bbs [2012/03/20 09:43]
tyrtamos
genalea_bbs [2012/07/02 12:37] (Version actuelle)
tyrtamos
Ligne 160: Ligne 160:
 [1, 1, 6, 2, 7, 1, 1, 3, 7, 1, 0, 2, 2, 1, 1, 7, 1, 7, 0, 2, 6, 4, 1, 2, 4, 2, 6, 5, 6, 1, 3, 0, 4, 4, 5, 6, 6, 4, 4, 3, 4, 6, 7, 4, 3, 3, 5, 0, 2, 1] [1, 1, 6, 2, 7, 1, 1, 3, 7, 1, 0, 2, 2, 1, 1, 7, 1, 7, 0, 2, 6, 4, 1, 2, 4, 2, 6, 5, 6, 1, 3, 0, 4, 4, 5, 6, 6, 4, 4, 3, 4, 6, 7, 4, 3, 3, 5, 0, 2, 1]
 </code> </code>
 +
 +
 +==== Générateur d'octets (version rapide simplifiée) ====
 +
 +Comme on a souvent besoin d'un générateur d'octets, on va en fabriquer un qui soit en même temps simple et rapide. 
 +
 +Sa seule contrainte est qu'il nécessitera que pnp, le produit des 2 nombres premiers, ait au moins 24 chiffres décimaux: cela permettra de créer l'octet avec seulement 2 calculs puis qu’alors on pourra extraire 4 bits en même temps à chacun des calculs, tout en respectant le log(log(pnp)). 
 +
 +<code python>
 +def gen8bits_bbs(graine, pnp):
 +    """itérateur retourne un octet au hasard selon le générateur Blum Blum Shub
 +       version rapide qui nécessite:  pnp à au moins 24 chiffres décimaux
 +    """
 +    while True:
 +        graine = pow(graine, 2, pnp)
 +        r = graine & 15 # récup des 4 bits inférieurs
 +        graine = pow(graine, 2, pnp)
 +        r |= (graine & 15)<<4 # récup et ajout des 4 bits supérieurs
 +        yield int(r) # retourne l'octet 
 +</code>
 +
 +Ce code est assez rapide: avec 2 nombres premiers de 512 bits, chaque nouvel octet ne demande que 6/100000 secondes!
  
 ==== Générateur de nombres entiers de n bits au hasard ==== ==== Générateur de nombres entiers de n bits au hasard ====
genalea_bbs.txt · Dernière modification: 2012/07/02 12:37 de tyrtamos