资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

python加密函数 python 数据加密

python的加密方式: rsa加密和解密

RSA加密是一种非对称加密,通常使用公钥加密,私钥解密。

丽江网站建设公司创新互联,丽江网站设计制作,有大型网站制作公司丰富经验。已为丽江超过千家提供企业网站建设服务。企业网站搭建\成都外贸网站建设要多少钱,请找那个售后服务好的丽江做网站的公司定做!

生成文件如下图:

可以将生成的公钥、私钥粘贴复制存储起来,以便使用:

在使用中, 通常会先对数据进行bas64加密, 再对加密后的内容使用rsa加密, 最后对rsa解密后的内容进行bas64解密.

Python简单加密操作

加密是将一个明文数据,按照指定的算法,运算得到一个其他的可以隐藏真实信息的密文数据,这个过程称为加密;处理的算法称为加密算法;用到的关键数据称为密钥。

解密是按照制定的算法和关键数据,将一个密文数据进行逆向运算得到的正确的明文数据的过程

如:用户账号密码存储,此时任何人都不能查看该用户的明文密码

1.原始数据

2.编码(转换为字节数据)

3.使用算法加密

4.利用盐值更新密文

5.得到加密后的数据

编码:字符串.encode(编码名称)——字节数据

解码:字节数据.decode(编码名称)——字符串数据

==========================================

使用python之MD5进行加密

在许多接口,尤其涉及到金额的地方,都需要用加密算法对数据进行加密。像密码、金额之类的,如果不做加密,被篡改数据,公司的损失会很大。

这里主要说MD5加密(即摘要算法),也就是采用哈希算法,将不定长度的内容转化为32位16进制固定长度的内容。前后台都使用这套算法,再将两者的加密数据比对,如果一致说明数据加密正确,否则数据可能出现篡改。

在pyhon里,可以导入hashlib进行加密,如下

方法一:

执行结果如下图:

方法二:

执行结果如下图:

Python程序加密打包

步骤:

1、使用此文程序编译python源程序为pyd

链接:

2、编写入口py文件,调用pyd模块

注意点:

1、由于pyinstaller不会导入pyd程序依赖包,所以需要将pyd程序依赖包在入口py文件中导入一次,避免打包exe时pyd无法使用

2、打包exe后,路径有所变化,pyd中路径需使用绝对路径

3、pyd文件不要写入口调用,if main等,在入口py文件中导包及调用相关函数

优点:脱离python环境,包依赖

缺点:文件较大

步骤:

1、将入口py文件打包为exe可执行程序,会自动导入pyd文件并进行封装

注意点:

1、打包exe后,cmd下运行程序,看是否有错误输出,按提示解决相应问题即可

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 key_str -p pwd_str  

-k key_str -t text_str""" 

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 数据加密
浏览路径:http://cdkjz.cn/article/hpjjhc.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

业务热线:400-028-6601 / 大客户专线   成都:13518219792   座机:028-86922220