Python实现简单的可逆加密程序实例
本文实例讲述了Python实现简单的可逆加密程序。分享给大家供大家参考。具体如下:
Python代码如下:
#coding=utf-8 ''''' Description:可逆的加密与解密 Environment:python2.5.x Author:idehong@gmail.com ''' importos importsys classCode(object): '''''可逆的加密与解密''' def__init__(self,key="idehong@gmail.com"): self.__src_key=key self.__key=self.__get_strascii(self.__src_key,True) defencode(self,value): '''''加密函数,加密后为一串数字''' return "%d"%(self.__get_strascii(value,True)^self.__key) defdecode(self,pwd): '''''解密函数''' ifself.is_number(pwd): returnself.__get_strascii((int(pwd))^self.__key,False) else: print'requirenumber.' defreset_key(self,key): '''''重新设置key''' self.__src_key=key self.__key=self.__get_strascii(self.__src_key,True) #=============================================================================== # 内部调用接口 #=============================================================================== def__get_strascii(self,value,bFlag): ifbFlag: returnself.__get_str2ascii(value) else: returnself.__get_ascii2str(value) def__get_str2ascii(self,value): ls=[] foriinvalue: ls.append(self.__get_char2ascii(i)) returnlong("".join(ls)) def__get_char2ascii(self,char): '''''获取单个字符的acsii码值''' try: return"%03.d"%ord(char) except(TypeError,ValueError): print"keyerror." exit(1) def__get_ascii2char(self,ascii): ifself.is_ascii_range(ascii): returnchr(ascii) else: print"asciierror(%d)"%ascii exit(1) def__get_ascii2str(self,n_chars): ls=[] s="%s"%n_chars n,p=divmod(len(s),3) ifp>0: nRet=int(s[0:p]) ls.append(self.__get_ascii2char(nRet)) pTmp=p whilepTmp<len(s): ls.append(self.__get_ascii2char(int(s[pTmp:pTmp+3]))) pTmp+=3 return"".join(ls) #================================================================================ # 工具接口 #================================================================================ defis_number(self,value): try: int(value) returnTrue except(TypeError,ValueError): pass returnFalse defis_ascii_range(self,n): return0<=n<256 defis_custom_ascii_range(self,n): return33<=n<48or58<=n<126 classUsage(object): ''''' 命令行参数读取与解析 ''' def__init__(self): self._clsWork=Code() self._args_dic={'arg_help':['-?','-help'], 'arg_p':['-p','-pwd'], 'arg_t':['-t','-text'], 'arg_k':['-k','-key'], } defhelp(self,*k): strHelp="Usage:pwd[-options][args...]whereoptioninclude:" strHelp+=""" -?-help printthishelpmessage -k<key_str>-p<pwd_str> -k<key_str>-t<text_str>""" printstrHelp defargs(self,argv_ls): '''''dispatchcommand''' # printargv_ls iflen(argv_ls)<=1orlen(argv_ls)>5: print'Unrecognizedoption' return cmd_dic={} curr_cmd='' #controlcommand fori,vinenumerate(argv_ls[1:]): forjinself._args_dic.items(): #addcommand ifvinj[1]andj[0]notincmd_dic: curr_cmd=j[0] cmd_dic[curr_cmd]=[] break else: #addargv ifcmd_dic: cmd_dic[curr_cmd].append(v) #execcommand ifcmd_dic: self.exec_cmd(cmd_dic) else: print'Unrecognizedoption' defexec_cmd(self,cmd_dic): '''''execcmd''' iflen(cmd_dic)==2: if'arg_p'incmd_dicand'arg_k'incmd_dic\ andlen(cmd_dic['arg_p'])==1andlen(cmd_dic['arg_k'])==1: self._clsWork.reset_key(cmd_dic['arg_k'][0]) printself._clsWork.encode(cmd_dic['arg_p'][0]) return elif'arg_t'incmd_dicand'arg_k'incmd_dic\ andlen(cmd_dic['arg_t'])==1andlen(cmd_dic['arg_k'])==1: self._clsWork.reset_key(cmd_dic['arg_k'][0]) printself._clsWork.decode(cmd_dic['arg_t'][0]) return self.help() if__name__=='__main__': usage=Usage() usage.args(sys.argv)
希望本文所述对大家的Python程序设计有所帮助。