Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from random import randint, seed
- import sys
- localvalid1 = "abcdefghijklmnopqrstuvwxyz"
- localvalid2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"
- localvalid3 = "!#$%&'*+-/=?^_`{|}~."
- decalage = 0
- def AdresseValide(s,debug=0):
- adresse = s
- pos = adresse.rfind("@")
- local = adresse[:pos]
- domaine = adresse[pos+1:]
- if debug == 1:
- print local
- print domaine
- valide = False
- localvalid = localvalid1 + localvalid2 + localvalid3
- # Verifie la partie locale
- for compteur in range(0,len(local)):
- if local[compteur] in localvalid:
- if debug == 1:
- print local[compteur],ord(local[compteur]),"True"
- valide = True
- else:
- if debug == 1:
- print local[compteur],ord(local[compteur]),"False"
- valide = False
- break
- r = adresse.find("..")
- if r > -1:
- valide = False
- return valide
- def CheckSum(s,debug = 0):
- somme = 0
- adresse = s.upper()
- for compteur in range(0,len(adresse)):
- if debug == 1:
- print adresse[compteur],ord(adresse[compteur])
- somme += ord(adresse[compteur])
- cs = somme/len(adresse)
- if debug == 1:
- print('somme = %d' % somme)
- print('ChkSum = %d' % cs)
- print('ChkSum = %s' % chr(cs))
- return cs,chr(cs)
- def EncodeCle(s, csum, debug = 0):
- global decalage
- adresse = s
- decalage = csum - 68
- if debug == 1:
- print("decalage is %d" % decalage)
- NouvelleAdresse = ""
- for compteur in range(0,len(adresse)):
- car = ord(adresse[compteur]) + decalage
- if compteur == 1:
- NouvelleAdresse = NouvelleAdresse + (chr(len(adresse)+68)) + chr(car)
- elif compteur == 2:
- NouvelleAdresse = NouvelleAdresse + chr(csum) + chr(car)
- else:
- NouvelleAdresse = NouvelleAdresse + chr(car)
- if debug == 1:
- print compteur, NouvelleAdresse
- return NouvelleAdresse
- def DecodeCle(s,debug = 0):
- global decalage
- adr = ""
- for compteur in range(0,len(s)):
- if debug != 0:
- print compteur,s[compteur],ord(s[compteur])-decalage,chr(ord(s[compteur])-decalage)
- if compteur == 0:
- adr = adr + chr(ord(s[compteur])-decalage)
- elif compteur == 1:
- adrlen = ord(s[compteur])-decalage
- elif compteur == 3:
- csumchr=s[compteur]
- else:
- adr = adr + chr(ord(s[compteur])-decalage)
- if debug == 1:
- print adr
- return adr
- def FaisLe():
- adresse = raw_input("Merci de saisir une adresse de courriel -> ")
- estOK = AdresseValide(adresse,0)
- if estOK == True:
- csum,csumchr = CheckSum(adresse)
- ke = EncodeCle(adresse,csum,0)
- print("Cle de licence = %s" % ke)
- print("Adresse originale = %s" % DecodeCle(ke,0))
- if __name__ == "__main__":
- FaisLe()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement