--- /dev/null
+# -*- coding:utf8 -*-
+
+import rsa
+
+import base64
+
+
+
+def lit(fi):
+ f=open(fi,"r")
+ a=f.read()
+ f.close()
+ return a
+
+
+def decoupe(s,taille):
+ l=[]
+ tranche=s[0:taille]
+ ind=0
+ while tranche!='':
+ l.append(tranche)
+ ind+=1
+ tranche=s[ind*taille:(ind+1)*taille]
+ return l
+
+def crypte(message,pub):
+ """Crypte le message, même si il est est trop long.
+ sort une chaîne b64-encodée avec les sauts de lignes à chaque découpage"""
+ # NB : ici, trop long veut dire >245,
+ # en vrai je sais pas comment on fait pour savoir
+ vraimessage=decoupe(message,245)
+ out=[]
+ for i in vraimessage:
+ lignecrypt=rsa.encrypt(i,pub)
+ out.append(base64.b64encode(lignecrypt))
+ return "\n".join(out)
+
+def decrypte(message,priv):
+ """Décrypte un long message, en prenant en entrée des lignes de b64"""
+ out=[]
+ vraimessage=message.split('\n')
+ for i in vraimessage:
+ lignecrypt=base64.b64decode(i)
+ out.append(rsa.decrypt(lignecrypt,priv))
+ return "".join(out)
+
+
+
+
+
+def litcles(privfile,pubfile):
+ priv,pub=None,None
+ if privfile!=None:
+ futurpriv=lit(privfile)
+ priv=rsa.PrivateKey.load_pkcs1(futurpriv)
+ if pubfile!=None:
+ futurpub=lit(pubfile)
+ pub=rsa.PublicKey.load_pkcs1(futurpub)
+ return priv,pub
+
+
+if __name__=="__main__":
+ priv,pub=litcles(privfile,pubfile)
+ message = raw_input("Entrez un message :")
+ print "message avant :\n%s\n"%(message)
+ message = crypte(message,pub)
+ print "message crypté (avec la clé publique) :\n%s\n"%(message)
+ message = decrypte(message,priv)
+ print "message crypté décrypté :\n%s\n"%(message)
+