背景:想给公司的进件流程写一套进件脚本,首先遇到的就是加密解密。公司用的 DES3 + base64 加密解密

一、安装  pycrypto模块,推荐用pycrypto编译文件,直接下载安装就行

http://www.voidspace.org.uk/python/modules.shtml#pycrypto

二、上代码,。此套代码是在 AES解密的基础上调整

#coding=utf-8

from Crypto.Cipher import _DES3 #加密解密方法

import base64

BS = _DES3.block_size

import json

import requests

def pad(s):

return s + (BS - len(s) % BS) * chr(BS - len(s) % BS)

#定义 padding 即 填充 为PKCS7

def unpad(s):

return s[0:-ord(s[-1])]

class prpcrypt():

def __init__(self, key):

self.key = key

self.mode = _DES3.MODE_CBC

self.iv = IV

# DES3的加密模式为CBC

def encrypt(self, text):

text = pad(text)

cryptor = _DES3.new(self.key, self.mode, self.iv)

#self.iv 为 IV 即偏移量

x = len(text) % 8

if x != 0:

text = text + '\0' * (8 - x) # 不满16,32,64位补0

# print(text)

self.ciphertext = cryptor.encrypt(text)

return base64.standard_b64encode(self.ciphertext).decode("utf-8")

def decrypt(self, text):

cryptor = _DES3.new(self.key, self.mode, self.iv)

de_text = base64.standard_b64decode(text)

plain_text = cryptor.decrypt(de_text)

# st = str(plain_text.decode("utf-8")).rstrip('\0')

# out = unpad(st)

# return out

#上面注释内容解密如果运行报错,就注释掉试试

return plain_text

if __name__ == '__main__':

iv = "******"    #IV偏移量

pc = prpcrypt('******') # 自己设定的密钥

message = {"ARRAYDATA":

{"FACILITYID":"","FACILITYNAME":"","FACILITYTYPE":"","PASSWORD":"***","USERNO":"***"},

"TOKEN":"***",

}

js = json.dumps(message)    #字典转str,再加密

print type(js)

e = pc.encrypt(js) # 加密内容

d = pc.decrypt(e) #解密内容

print e #加密后

print d #解密后

url = "***"

header = {"Content-Type":"application/x-www-form-urlencoded",

"Accept-Encoding": "gzip",

"User-Agent": "okhttp/3.8.0"}

message1 ={"message":e}

r = requests.post(url,headers=header,data=message1)

text1 = r.text

print text1

d1 = pc.decrypt(text1)

print d1

r = re.findall('\{(.+)\}',d1) #取值,对于返回值后面带有特殊字符,如空格、\等

d = eval("{"+r[0]+"}") #str转化成字典

token = d["ARRAYDATA"]["TOKEN"]  #字典取值

print token

python des加密文件_python DES3 加密解密相关推荐

  1. python des加密文件_Python DES加密解密方法 pyDes库 兼容中文

    单纯记录一下Python中DES加密解密的使用方式直接看代码: 依赖pyDes库安装> pip install pyDes 约定秘钥 python和java 加密和解密联调,兼容中文字符串 Py ...

  2. python的pyd文件_Python 加密之 生成pyd文件

    混淆代码,我准备使用pyminifier.而加密处理,就比较麻烦. Python有py.pyc.pyw.pyo.pyd等文件格式. 其中,pyc是二进制文件.但很容易被反编译. pyw也不行,只是隐藏 ...

  3. Python实现对文件内容进行加密

    目录 Small-fish文件加密库 1.加密 要加密文件内容 加密后内容 2.解密 1.代码讲解 字典 加密函数 解密函数 用Python实现对文件的内容进行加密,之前博主查询了资料看见的多半是Py ...

  4. linux密码加密文件,Linux下加密/解密及用密码保护文件的七把利器

    加密是指对文件进行编码的过程,那样只有有权访问的人才可以访问文件.人类早在计算机还没有问世的时候就开始使用加密了.战争期间,人类会传输只有其部落或相关人员才能理解的某种信息. 作者:布加迪/编译来源: ...

  5. python读取pdf文件_python读取pdf文件

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 一.安装pdfminer3k模块?二. 读取pdf文件import sysimp ...

  6. 用python汇总pdf文件_Python处理PDF文件-简译与总结

    最近看到一篇介绍Python中pyPDF模块的文章,详细介绍了使用pyPDF模块获取PDF文件信息,合并拆分PDF文件等功能.很方便,在此搬运分享以下: 全文介绍了以下几方面的功能 提取文件信息 旋转 ...

  7. python合并csv文件_PYTHON合并CSV文件的实践

    最近尝试使用PYTHON处理CSV数据,由于CSV文件有好几个,需要提前拼接,然后再处理,因此遇到了PYTHON对文件进行合并的问题.此次尝试了两种方法:一是调用CMD命令处理:二是使用PYTHON写 ...

  8. python拆分合并文件_python实现文件的分割与合并

    使用Python来进行文件的分割与合并是非常简单的. python代码如下: splitFile--将文件分割成大小为chunksize的块: mergeFile--将众多文件块合并成原来的文件: # ...

  9. python 流写入文件_python文件流操作

    博主在学习python时对文件进行操作时经常踩一下坑.所以专门梳理了一下.有问题麻烦指出哈. python对于文件的操作我们一般是用open().我们根据python的源码可以看出.我们必须要传的参是 ...

最新文章

  1. usaco Ski Course Design
  2. ES mlockall作用——preventing that memory from being paged to the swap area
  3. 关于多人操作数据的处理策略
  4. uwsgi 的app变量名称必须为application
  5. CentOS6.9中使用yum install时提示:Cannot find a valid baseurl for repo: centos-sclo-rh
  6. PAT_B_1085_Java(25分)
  7. 使用ABBYY FineReader进行自动图像预处理
  8. 1024程序员节来啦!!.NET技术圈独家优惠劵,折后再折,赶紧来抢啊
  9. Source Insight 教程
  10. 博弈论 —— python
  11. 透过一个编译报错,总结两个Go程序编译的重要知识
  12. c语言追加字符串_Redis源码解析二--简单动态字符串
  13. Quoit Design
  14. 锐捷服务器端口映射教程,锐捷路由器端口映射,路由器端口映射
  15. 周鸿祎——互联网业界的“搅局者”
  16. python版webpower的edm的api接口
  17. php speex,将微信jssdk录制的speex高清音频转换为wav/mp3
  18. WebGoat8 M17 Password Reset 密码重置 答案、思路、题解
  19. 北京大学计算机考研资料汇总
  20. 故宫夜景门票最高炒至9999元 官方:二手票难以入场

热门文章

  1. ECSHOP商城网站建设之自定义调用广告方法(二)
  2. C++ 中dynamic_castlt;gt;的用法
  3. hibernate 之HQL查询实例
  4. 另类网页设计:30个复古怀旧风格的网站作品
  5. 解决listview addheader EditText焦点问题
  6. (推荐)(提供下载)ORACLE常见问题一千问(不怕学不成、就怕心不诚!)
  7. 保持 Go 模块兼容
  8. C++构造函数与析构函数调用虚函数的注意事项
  9. 新手C#面向对象的学习2018.08.06
  10. jQuery.获取子节点