Advertisement
Guest User

FCM n°84 - Programmer en Python n°53

a guest
Sep 20th, 2014
336
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.53 KB | None | 0 0
  1. from random import randint, seed
  2. import sys
  3.  
  4. localvalid1 = "abcdefghijklmnopqrstuvwxyz"
  5. localvalid2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"
  6. localvalid3 = "!#$%&'*+-/=?^_`{|}~."
  7. decalage = 0
  8.  
  9. def AdresseValide(s,debug=0):
  10.     adresse = s
  11.     pos = adresse.rfind("@")
  12.     local = adresse[:pos]
  13.     domaine = adresse[pos+1:]
  14.     if debug == 1:
  15.         print local
  16.         print domaine
  17.     valide = False
  18.     localvalid = localvalid1 + localvalid2 + localvalid3
  19.     # Verifie la partie locale
  20.     for compteur in range(0,len(local)):
  21.         if local[compteur] in localvalid:
  22.             if debug == 1:
  23.                 print local[compteur],ord(local[compteur]),"True"
  24.             valide = True
  25.         else:
  26.             if debug == 1:
  27.                 print local[compteur],ord(local[compteur]),"False"
  28.             valide = False
  29.             break
  30.     r = adresse.find("..")
  31.     if r > -1:
  32.         valide = False
  33.     return valide
  34.    
  35. def CheckSum(s,debug = 0):
  36.     somme = 0
  37.     adresse = s.upper()
  38.     for compteur in range(0,len(adresse)):
  39.         if debug == 1:
  40.             print adresse[compteur],ord(adresse[compteur])
  41.         somme += ord(adresse[compteur])
  42.     cs = somme/len(adresse)
  43.     if debug == 1:
  44.         print('somme = %d' % somme)
  45.         print('ChkSum = %d' % cs)
  46.         print('ChkSum = %s' % chr(cs))
  47.     return cs,chr(cs)
  48.  
  49. def EncodeCle(s, csum, debug = 0):
  50.     global decalage
  51.     adresse = s
  52.     decalage = csum - 68
  53.     if debug == 1:
  54.         print("decalage is %d" % decalage)
  55.     NouvelleAdresse = ""
  56.     for compteur in range(0,len(adresse)):
  57.         car = ord(adresse[compteur]) + decalage
  58.         if compteur == 1:
  59.             NouvelleAdresse = NouvelleAdresse + (chr(len(adresse)+68)) + chr(car)
  60.         elif compteur == 2:
  61.             NouvelleAdresse = NouvelleAdresse + chr(csum) + chr(car)
  62.         else:
  63.             NouvelleAdresse = NouvelleAdresse + chr(car)
  64.     if debug == 1:
  65.         print compteur, NouvelleAdresse
  66.     return NouvelleAdresse
  67.    
  68. def DecodeCle(s,debug = 0):
  69.     global decalage
  70.     adr = ""
  71.     for compteur in range(0,len(s)):
  72.         if debug != 0:
  73.             print compteur,s[compteur],ord(s[compteur])-decalage,chr(ord(s[compteur])-decalage)
  74.         if compteur == 0:
  75.             adr = adr + chr(ord(s[compteur])-decalage)
  76.         elif compteur == 1:
  77.             adrlen = ord(s[compteur])-decalage
  78.         elif compteur == 3:
  79.             csumchr=s[compteur]
  80.         else:
  81.             adr = adr + chr(ord(s[compteur])-decalage)
  82.     if debug == 1:
  83.         print adr          
  84.     return adr
  85.    
  86. def FaisLe():
  87.     adresse = raw_input("Merci de saisir une adresse de courriel -> ")
  88.     estOK = AdresseValide(adresse,0)
  89.     if estOK == True:
  90.         csum,csumchr = CheckSum(adresse)
  91.         ke = EncodeCle(adresse,csum,0)
  92.         print("Cle de licence    = %s" % ke)
  93.         print("Adresse originale = %s" % DecodeCle(ke,0))
  94.    
  95. if __name__ == "__main__":
  96.     FaisLe()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement