#!/usr/bin/python # Copyright 2014 Oracle | BlueKai import hashlib, re ''' Demonstration on email and phone hashing ''' class Hashing: def normalizePhoneNumber(self, phoneNumber): return re.sub("[^0-9]+","",re.sub("^0+", "",phoneNumber.strip())) def normalizeEmail(self, email): return re.sub("\+[^@]*@", "@",email.strip().lower()) def createHash(self,stringToHash, algorithm): algorithms = { 'sha256': lambda s: hashlib.sha256(stringToHash).hexdigest(), } return algorithms[algorithm](stringToHash) def createEmailHash(self,email, algorithm): return self.createHash(self.normalizeEmail(email),algorithm) def createPhoneHash(self,phone, algorithm): return self.createHash(self.normalizePhoneNumber(phone),algorithm) if __name__ == "__main__": hashCreator = Hashing() assert hashCreator.normalizeEmail(" Test@somewhere.com ") == "test@somewhere.com" assert hashCreator.normalizeEmail("Test+alias@gMail.Com ") == "test@gmail.com" assert hashCreator.normalizePhoneNumber(" 00123-456-7890 ") == "1234567890" assert hashCreator.createEmailHash(" Test@somewhere.com ", "sha256") == "c6835820412cddddd5197dab400fec65c3d9a2617ae4ceb1442ec753abeec0ba" assert hashCreator.createPhoneHash(" 00123-456-7890 ", "sha256") == "c775e7b757ede630cd0aa1113bd102661ab38829ca52a6422ab782862f268646" print "All tests pass!"