python 加密
2018-05-19 本文已影响0人
岛在深海处
1.利用pyDes加密
import pyDes
pyDes.des(key,[mode], [IV], [pad], [padmode])
key:密钥,只能接受8位,如果是16位,可以尝试截取前8位。16或者24位可以尝试triple DES。
mode:加密模式,可填pyDes.ECB (Electronic Code Book) 或者 pyDes.CBC。默认值为ECB。
IV: 可选的初始值字节,必须在使用CBC模式时提供,使用ECB模式时可以设为默认值。
长度必须是8个字节,默认值为None。
pad:当padmode=PAD_PKCS5时可设为默认值,默认值为None;
padmode:可选参数设置填充模式(PAD_NORMAL或PAD_PKCS5),默认值:PAD_NORMAL。
使用示例:
d = des("7ME9F8QC", padmode=PAD_PKCS5)
#由于使用列表转成String后是单引号,所以使用这种方式组合数据。
str = ['{"acType":0, ', '"agent":{}, '.format(AGENT_ID), '"api":"RegisterOrLoginUser","password":"{}", '.format(password), '"username":"{}"'.format(name), '}']
params = "".join(str)
en = d.encrypt(params) #给params进行des加密
base = base64.b64encode(en)#将加密结果转为base64位bytes
base1 = base.decode('utf-8') #解码成utf-8的Unicode。
python3.x里默认的str是(py2.x里的)unicode, bytes是(py2.x)的str, b""前缀代表的就是bytes
python2.x里, b前缀没什么具体意义, 只是为了兼容python3.x的这种写法
2.利用hashlib进行md5加密
示例:
md5_en = md5_b.encode('utf-8')#首先得把Unicode转为byte。
sign = hashlib.md5(md5_en).hexdigest()