Bibm@th

Forum de mathématiques - Bibm@th.net

Bienvenue dans les forums du site BibM@th, des forums où on dit Bonjour (Bonsoir), Merci, S'il vous plaît...

Vous n'êtes pas identifié(e).

Répondre

Veuillez composer votre message et l'envoyer
Nom (obligatoire)

E-mail (obligatoire)

Message (obligatoire)

Programme anti-spam : Afin de lutter contre le spam, nous vous demandons de bien vouloir répondre à la question suivante. Après inscription sur le site, vous n'aurez plus à répondre à ces questions.

Quel est le résultat de l'opération suivante (donner le résultat en chiffres)?
neuf moins six
Système anti-bot

Faites glisser le curseur de gauche à droite pour activer le bouton de confirmation.

Attention : Vous devez activer Javascript dans votre navigateur pour utiliser le système anti-bot.

Retour

Résumé de la discussion (messages les plus récents en premier)

Golgup
30-06-2009 08:51:30

Re,

J'en profite pour dire à Fred que son applet http://www.bibmath.net/crypto/moderne/rsa.php3 donne des exposants de dechiffrement negatif! Le probleme serait vite réglé en conditionnant sa négativité et en y remediant: d=d-(p-1)(q-1)*-1

bye

Golgup
29-06-2009 10:06:23

Aller, je vous embête une derniere fois et vous propose ce code de generation de clefs rsa pour les interessés!

from math import log
from random import*
def teun(s,f=0,t1=[]):
    while s!=f:
        s-=f
        c=int(log(s)/log(2))
        f=2**c
        t1.append(c)
    return t1

a=2
def tdeux(p,a,u=0,z=a,j=a,t2=[a]):
    while u!=t1[0]:
        z=j**2%p
        j=z
        u+=1
        t2.append(z)
    return t2

def tetrois(t3=[],o=-1):
    while o<len(t1)-1:
        o+=1
        t3.append(t2[t1[o]])
    return t3

print"                                                                  *Generateur de clefs RSA*"
print""
print""
b=input('Entrez a taille de la clef en bits:')
print"------------------------------------------------------------------------"
print""
p=1
while p<2**int((b+1)/2):
    p=randrange(2**int((b-1)/2),2**int((b+1)/2))
    if p%2==0:
        p=p+1
    s=p-1
    t1=teun(s,f=0,t1=[])
    t2=tdeux(p,a,u=0,z=a,j=a,t2=[a])
    t3=tetrois(t3=[],o=-1)
    m=reduce(lambda x, y: x *y, t3)%p
    if m==1:
        break
q=1
while q<2**int((b+1)/2):
    q=randrange(2**int((b-1)/2),2**int((b+1)/2))
    if q%2==0:
        q=q+1
    s=q-1
    teun(s,f=0,t1=[])
    t1=teun(s,f=0,t1=[])
    tdeux(q,a,u=0,z=a,j=a,t2=[a])
    t2=tdeux(q,a,u=0,z=a,j=a,t2=[a])
    tetrois(t3=[],o=-1)
    t3=tetrois(t3=[],o=-1)
    m=reduce(lambda x, y: x *y, t3)%q
    if m==1:
        break
   
n=p*q
e=2**16+1
phi=(p-1)*(q-1)

def pgcd(a,b):
    try:
        while b!=0:
            a=a%b
            b=b%a
        return a
    except:
        return b

def t1_t2(a,b):
    try:
        while b!=0:
            a=a%b
            t1.append(a)
            t2.append(b/a)
            b=b%a
            t1.append(b)
            t2.append(a/b)
        return t2
    except:
        return t2

def xk(l=1,xk=[1,0,1]):
    while l!=len(t1)-2:
        l+=1
        xk.append(t2[l-1]*xk[len(xk)-1]+xk[len(xk)-2])
    return xk
       
while pgcd(e,phi)!=1:
    e+=2
if pgcd(e,phi)==1:
    t1,t2=[e,phi],[e/phi]
    t2=t1_t2(e,phi)
    xk=xk(l=1,xk=[1,0,1])
    d=((-1)**(len(t1)-2))*xk[len(xk)-2]
    if d<0:
        d=d-phi*-1

p='?'
q='?'
phi='?'
                               

print"                                                  Clef publique:"
print""
print 'n','=',n
print 'e','=',e
print""
print"------------------------------------------------------------------------"
print""
print"                                                  Clef privée:"
print""
print 'd','=',d
print""
print"------------------------------------------------------------------------"

Si vous voulez connaître les 2 composants de n ainsi que phi(n) ou encore vérifier que ed=1 mod phi, supprimez juste ces lignes

p='?'
q='?'
phi='?'

@+++

Pied de page des forums