python加密程序_Python 简单的可逆加密程序

简单加密

1.[代码][Python]代码

#coding=utf-8

'''''

Description: 可逆的加密与解密

Environment: python2.5.x

Author:idehong@gmail.com

'''

import os

import sys

class Code(object):

'''''可逆的加密与解密'''

def __init__(self, key = "idehong@gmail.com"):

self.__src_key = key

self.__key = self.__get_strascii(self.__src_key, True)

def encode(self, value):

'''''加密函数, 加密后为一串数字'''

return "%d" % (self.__get_strascii(value, True) ^ self.__key)

def decode(self, pwd):

'''''解密函数'''

if self.is_number(pwd):

return self.__get_strascii( (int(pwd)) ^ self.__key, False )

else:

print 'require number.'

def reset_key(self, key):

'''''重新设置key'''

self.__src_key = key

self.__key = self.__get_strascii(self.__src_key, True)

#===============================================================================

# 内部调用接口

#===============================================================================

def __get_strascii(self, value, bFlag):

if bFlag:

return self.__get_str2ascii(value)

else:

return self.__get_ascii2str(value)

def __get_str2ascii(self, value):

ls = []

for i in value:

ls.append( self.__get_char2ascii( i ) )

return long("".join(ls))

def __get_char2ascii(self, char):

'''''获取单个字符的acsii码值'''

try:

return "%03.d" % ord(char)

except (TypeError, ValueError):

print "key error."

exit(1)

def __get_ascii2char(self, ascii):

if self.is_ascii_range(ascii):

return chr(ascii)

else:

print "ascii error(%d)" % ascii

exit(1)

def __get_ascii2str(self, n_chars):

ls = []

s = "%s" % n_chars

n, p = divmod(len(s), 3)

if p > 0:

nRet = int(s[0 : p])

ls.append( self.__get_ascii2char(nRet))

pTmp = p

while pTmp < len(s):

ls.append( self.__get_ascii2char( int(s[pTmp: pTmp + 3])) )

pTmp += 3

return "".join(ls)

#================================================================================

# 工具接口

#================================================================================

def is_number(self, value):

try:

int(value)

return True

except (TypeError, ValueError):

pass

return False

def is_ascii_range(self, n):

return 0 <= n < 256

def is_custom_ascii_range(self, n):

return 33 <= n <48 or 58 <= n < 126

class Usage(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'],

}

def help(self, *k):

strHelp = "Usage: pwd [-options] [args...] where option include:"

strHelp += """

-? -help print this help message

-k -p

-k -t """

print strHelp

def args(self, argv_ls):

'''''dispatch command'''

# print argv_ls

if len(argv_ls) <= 1 or len(argv_ls) > 5:

print 'Unrecognized option'

return

cmd_dic = {}

curr_cmd = ''

# control command

for i, v in enumerate(argv_ls[1:]):

for j in self._args_dic.items():

# add command

if v in j[1] and j[0] not in cmd_dic:

curr_cmd = j[0]

cmd_dic[curr_cmd] = []

break

else:

# add argv

if cmd_dic:

cmd_dic[curr_cmd].append(v)

# exec command

if cmd_dic:

self.exec_cmd(cmd_dic)

else:

print 'Unrecognized option'

def exec_cmd(self, cmd_dic):

'''''exec cmd'''

if len(cmd_dic) == 2:

if 'arg_p' in cmd_dic and 'arg_k' in cmd_dic\

and len(cmd_dic['arg_p']) == 1 and len(cmd_dic['arg_k']) == 1:

self._clsWork.reset_key(cmd_dic['arg_k'][0])

print self._clsWork.encode(cmd_dic['arg_p'][0])

return

elif 'arg_t' in cmd_dic and 'arg_k' in cmd_dic\

and len(cmd_dic['arg_t']) == 1 and len(cmd_dic['arg_k']) == 1:

self._clsWork.reset_key(cmd_dic['arg_k'][0])

print self._clsWork.decode(cmd_dic['arg_t'][0])

return

self.help()

if __name__ == '__main__':

usage = Usage()

usage.args(sys.argv)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值