简单加密

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)

python加密程序_Python 简单的可逆加密程序相关推荐

  1. python对数字进行简单的可逆加密_Python实现简单的可逆加密程序实例

    本文实例讲述了Python实现简单的可逆加密程序.分享给大家供大家参考.具体如下: Python代码如下: 代码如下: #coding=utf-8 ''''' Description: 可逆的加密与解 ...

  2. python网络爬虫入门小程序_Python 实现网络爬虫小程序

    转载请注明作者和出处: http://blog.csdn.net/c406495762 运行平台: Windows Python版本: Python3.x IDE: Sublime text3 前言 ...

  3. python均分纸牌_Python实现比较扑克牌大小程序代码示例

    是Udacity课程的第一个项目. 先从宏观把握一下思路,目的是做一个比较德州扑克大小的问题 首先,先抽象出一个处理的函数,它根据返回值的大小给出结果. 之后我们在定义如何比较两个或者多个手牌的大小, ...

  4. python读取输入流_python – 将一个正在运行的程序的输出流传输到其他正在运行的程序的输入流...

    我有两个并行运行的程序. 我想将一个程序的输出流重定向到其他程序的输入流. 我试过管道,但似乎第一个程序的输出仅在第一个程序终止时被重定向到第二个程序的输入. 但是,我的要求并非如此. 例如,第一个程 ...

  5. python api 示例_Python简单接口测试实例

    测试项目的登录网址:http://10.10.134.86:8083/Login/Index,我觉得不同的项目都应该和开发打好关系(最少一个)可以从他们学到每个项目的接口的作用. 首先我们使用错误的登 ...

  6. python制作加密工具_Python制作钉钉加密/解密工具

    又是很久没有写技术博客了,盖因最近都在学习知识,也没有总结出什么值得分享的内容,所以一直停笔至今.最近的工作和钉钉的开发打上了交到,官方并没有提供任何Python的SDK,于是只能全部自己写.现在我将 ...

  7. python简单的小程序_Python简单小程序---名片简易系统

    Python简单小程序---名片简易系统 主程序功能代码 import cards_tools while True: cards_tools.show_meun() action = int(inp ...

  8. python网络爬虫程序_Python写的网络爬虫程序(很简单)

    Python写的网络爬虫程序(很简单) 这是我的一位同学传给我的一个小的网页爬虫程序,觉得挺有意思的,和大家分享一下.不过有一点需要注意,要用python2.3,如果用python3.4会有些问题出现 ...

  9. python常用加密算法_python 三个常用加密 base64,md5,sha1

    做比赛的经常会用到这三个算法 今天集合在一起 [python] import hashlib import base64 s = 'justforfun' print s for i in range ...

最新文章

  1. python做圆柱绕流_圆柱绕流
  2. 第四篇:断路器(Hystrix)(Finchley版本)V2.0_dev
  3. Unity 之命名规范(一)
  4. jsp和mysql乱码
  5. 【oracle】常用函数总结
  6. 大厂“无敌卷王”、“圈养式”招聘?年后测试员跳槽一定要注意这几个坑
  7. 翻译: 欢迎使用 KITTI Vision Benchmark Suite!
  8. [安全防护]诺顿产品之Symantec Endpoint Protection
  9. 脚本入门(2)-perl脚本
  10. FishC笔记—18 讲 函数:灵活即强大
  11. IMC IMV SecurityCenter连通
  12. 软件系统设计基本原则
  13. BIOS int 10H中断介绍
  14. 点到平面的距离、向量与平面夹角
  15. 新媒体运营的基本方法——四步法让你成为新媒体业内大佬
  16. 自动驾驶技术基础——惯导
  17. 误报率、故障检测率、漏报率、虚警率、误警率等指标异同及计算公式
  18. PHP反序列化详解(二)——PHP魔术方法与PHP反序列化漏洞
  19. 实现多数据源混合计算的方案之一
  20. D3D11 立方体贴图(天空盒子)

热门文章

  1. 怎样永久更改嵌入式linux系统ip,如何修改嵌入式系统IP
  2. java异常顺序_网易新闻
  3. python设计一个动物类_我用Python实现了12500张猫狗图像的精准分类
  4. Vim进阶2 map映射
  5. mysql ubuntu 17.04_1、mysql 5.7 ubuntu17.04
  6. openssl 生成证书_CentOS7 httpd(Apache)SSL 证书部署
  7. mysql插入语句例句,一句简单的MySql插入语句怎么写 ?
  8. php 栈实现历史记录后退,栈:如何实现浏览器的前进和后退功能
  9. Linux 服务器停止当前运行的程序,实验,代码
  10. oracle命令行安装