python DES3 加密解密
背景:想给公司的进件流程写一套进件脚本,首先遇到的就是加密解密。公司用的 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 DES3 加密解密的更多相关文章
- 利用openssl进行BASE64编码解码、md5/sha1摘要、AES/DES3加密解密
国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...
- 使用python进行加密解密AES算法
使用python进行加密解密AES算法-代码分享-PYTHON开发者社区-pythoner.org 使用python进行加密解密AES算法 TY 发布于 2011-09-26 21:36:53,分类: ...
- Python常用加密解密算法
MD5加密 简介 这是一种使用非常广泛的加密方式,不可逆的,常见16位和32位一般都是md5 实现 import hashlib data = '你好' print(hashlib.md5(data. ...
- python rsa 加密解密 (编解码,base64编解码)
最近有需求,需要研究一下RSA加密解密安全:在网上百度了一下例子文章,很少有文章介绍怎么保存.传输.打印加密后的文本信息,都是千篇一律的.直接在一个脚本,加密后的文本信息赋于变量,然后立马调用解密.仔 ...
- python RSA加密解密及模拟登录cnblog
1.公开密钥加密 又称非对称加密,需要一对密钥,一个是私人密钥,另一个则是公开密钥.公钥加密的只能私钥解密,用于加密客户上传数据.私钥加密的数据,公钥可以解密,主要用于数字签名.详细介绍可参见维基百科 ...
- python Crypto 加密解密
本片文字记录使用python 的Crypto 工具对图片或者文本进行加密解密的方法: import numpy as np from PIL import Image from base64 impo ...
- [Python] 字符串加密解密
1. 最简单的方法是用base64: import base64 s1 = base64.encodestring('hello world') s2 = base64.decodestring(s1 ...
- python AES加密解密 pycryptodome
环境 pyhton3.6 博主为了解码 AES 用了1天的时间,安了各种包,然而走了很多坑,在这里给大家提供一个简便的方法 首先在命令行(推荐) pip install Crypto 你会发现安装下 ...
- python pycryptodome 加密解密
pip3 install pycryptodome my_private_rsa_key.bin -----BEGIN RSA PRIVATE KEY----- MIICXQIBAAKBgQDlOJu ...
随机推荐
- TCP/IP模型
TCP/IP是一组用在实现网络相互连接的通信协议,internet网络体系结构就是以TCP/IP为核心的. TCP/IP分成了四个层次 1.应用层 应用层对应与OSI参考模型的高层,为用户提供了所需要 ...
- 初探csrf学习笔记
以下是学习了对CSRF的理解,大家切勿作为标准,如有出错请告之! 严禁转载.不想拿自己刚学到的知识去[误人子弟]之所以写出来是让自己巩固和增加理解,他日对此文有不当之处自会修改. [00x1]csrf ...
- 开源Bug管理系统Redmine安装和使用心得
最终忍受不了公司使用论坛+Excel来进行bug反馈和管理工作了,于是花了一个上午时间研究了下bug管理系统.这样一个bug管理系统能够轻松的查看bug新增了哪些,攻克了哪些.当前是谁,要在什么时间解 ...
- Ubuntu12.04安装vim7.3
刚开始使用Linux的新手,Ubuntu的软件中心可以直接安装vim,个人觉得那样跟windows就没啥区别了,借vim正好也学习一下Linux的编译安装方法,记录一下. Linux下有很多安装形式, ...
- java:eclipse-tomcat 配置
计划开始学习java.第一步 1.在servers窗口中新建server 2.弹出的界面选择对应的tomcat版本 3.这里是关键,已存在的项目不要选择过去,否则最后生成的server配置无法修改se ...
- js版in_array函数
//检测数组中是否存在某个字符串 function in_array(search,array){ for(var i in array){ if(array[i]==search){ return ...
- 使用jmeter实现对jar包的调用
一.前言 在我们测试接口的过程中,可能有时需要用到第三方jar包来生成一些测试数据(如有时需要对参数的输入值使用第三方jar包进行加密操作),涉及到这种的情况,普遍做法是:手动调用jar包获得需要的值 ...
- sudo -E的意思
1.sudo -E -E选项在man page中的解释是: -E The -E (preserve environment) option indicates to the security poli ...
- redis 分布式,主从同步
redis和memcache比较像的,memcache可以实现服务器的集群,redis肯定也是可以的.下面在一台机,实现redis主从复制. 1,copy一下redis.conf,生成一个从机的配置 ...
- Material design之Compatibility(适配)
Compatibility,为Android L版本和旧版本进行适配设置. 一:Material Theme适配 因为Material Theme只能在Android L的版本中使用,所以为了应用能在 ...