python aes 加盐 加密解密
python aes 加盐 加密解密
爬虫就是在学习的过程,前几天从某网站的js里学到的加密方式,通过下断点弄清加密原理后,用python复现一下,在这里和大家分享下
#--------引入模块--------
from Crypto.Cipher import AES
import base64
import time
import random
from hashlib import md5
from Crypto.Util.Padding import pad,unpad#--------函数区--------
def md(s,salt):#md5加密,盐加在了末尾,这个可以自定义,加在开头,加在中间斗ok的,只要两端的加密方式统一就可以mdd=md5()mdd.update(s+salt)return mdd.digest()def dec(key,iv,data):#aes解密decc= AES.new(key,AES.MODE_CBC,iv)result=unpad(decc.decrypt(data),block_size=16).decode()return resultdef enc(key,iv,data):#aes加密decc = AES.new(key, AES.MODE_CBC, iv)result=decc.encrypt(pad(data.encode(),block_size=16))return resultdef saltenc(xdata, ts): # 加盐解密password = 'xxxxxxxxxxxxxxxxxxx:' + ts # 加密的原始key,可以是你任意想输入的内容,也可以像这样由固定字符串和时间戳决定,同时兼顾了校验的功能salt = md(str(random.random()).encode(), b'')[4:12] # 随机生成盐,8位,其他位数也是可以的,影响不是很大st = md(password.encode(), salt) # 第一次md5keys = md(st + password.encode(), salt) # 第一次md5的结果加上原始key再进行一次md5key = st + keys # 两次加密结果衔接作为32位的加密keyiv = md(keys + password.encode(), salt) # 将得到的key再和原始key相加进行一次md5,作为偏移量ivencda = enc(key, iv, xdata) # 使用加密key和iv进行加密result = base64.b64encode(b'Salted__' + salt + encda).decode() # 返回结果带上salted和盐,进行base加密return resultdef saltdec(xdata,ts):#加盐加密password = 'xxxxxxxxxxxxxxxxxxx:' + ts#加密的原始keys=base64.b64decode(xdata)#base64解密data=s[16:]#数据从第17位开始salt=s[8:16]#这里是盐的位置st=md(password.encode(),salt)#第一次md5keys=md(st+password.encode(),salt)#第一次md5的结果加上原始key再进行一次md5key=st+keys # 32位的加密key由两次加密结果衔接得到iv=md(keys+password.encode(),salt)#将得到的key再和原始key相加进行一次md5,得到偏移量ivresult=dec(key,iv,data)# 使用加密key和iv进行解密return resultdef test():#测试函数unenc_data='i am laowei'#原始数据timestamp = str(int(time.time() * 1000))#13位时间戳enc_data=saltenc(unenc_data,timestamp)#加密print(enc_data)#打印加密后数据dec_data=saltdec(enc_data,timestamp)#解密加密数据print(dec_data)#打印解密数据test()
ps:知道了算法,很多东西就可以不拘泥于形式,比如说md5时盐的位置,原始key的选择,原始key换为加密key的方式,也可以不局限于md5,sha256也是不错的选择,甚至是几种hash方式配合使用
老魏的公众号,会发布一些个人爬虫的案例和经验,欢迎大家一起来交流
python aes 加盐 加密解密相关推荐
- Python项目-Day26-数据加密-hash加盐加密-token-jwt
Python项目-Day26-数据加密-hash加盐加密-token-jwt 数据加密 import hashlibpwd='a123456' #sha1的参数必须是二进制 temp=hashlib. ...
- angular和JAVA实现aes、rsa加密解密,前后端交互,前端加解密和后端JAVA加解密实现
今天实现了下AES和RSA加密解密,主要的功能是对前后端交互数据进行加密解密,为什么要用到两个算法呢,首先RSA默认的话加密长度是有限的100多个byte吧大约,并且需要公钥私钥,而AES加密没有限制 ...
- md5加密,md5加盐加密和解密
package com.java.test;import java.security.MessageDigest; import java.security.SecureRandom; import ...
- java md5加盐与解密_md5加密,md5加盐加密和解密
packagecom.java.test;importjava.security.MessageDigest;importjava.security.SecureRandom;importjava.u ...
- python aes padding_python笔记43-加解密AES/CBC/pkcs7padding
前言 有些公司对接口的安全要求比较高,传参数的时候,不会明文的传输,先对接口加密,返回的数据也加密返回. 目前比较常见的加密方式是AES/CBC/pkcs7padding. AES五种加密模式 在AE ...
- MD5加盐加密工具类(可直接使用)
MD5加盐加密工具类 在我们做项目时,涉及到用户密码,而正常来说数据库中不会直接存储明文的密码,都是加密之后的密码. 密码加密的方式有很多,比如: ① 3DES.AES.DES:使用对称加密算法,可以 ...
- 可以考的python方面的证书-python有证书的加密解密实现方法
本文实例讲述了python有证书的加密解密实现方法.分享给大家供大家参考.具体实现方法如下: 最近在做python的加解密工作,同时加完密的串能在php上能解出来,网上也找了一些靠谱的资料,刚好也有时 ...
- Vue前端和Java后端 联调使用AES 前后端加密解密
Vue前端和Java后端 联调使用AES 前后端加密解密 最近在项目中需要针对重要数据进行加密传输,在网上找了一大推加密方式 最终采用AES 加密 Java端 package com.zk.web.u ...
- 基于java注册登录MD5算法加盐加密颁发 Token身份令牌使用各种邮箱发送验证码详解雪花算法
目的作用 == 在项目中,为了防止别人窥视我们的密码通常我们会采取一些加密方式.这里简单介绍一下MD5 加盐加密方法,MD5叫做信息-摘要算法,严格来说不是加密方式,而是信息摘要. 对于可以接触到数据 ...
最新文章
- Pytorch-基于Transformer的情感分类
- 『数据库』数据库系统效率Max--数据库并发控制
- 锅巴H264播放器地址和说明
- 数据结构前缀,后缀,中缀表达式
- 分布式6大核心专题_分布式Session
- toj 4315 一二三
- 【bzoj1704】[Usaco2007 Mar]Face The Right Way 自动转身机 贪心
- java 正则表达式 分组(group)
- python中的and_我想问下python中 逻辑与:“”和“and”的区别
- matlab2c使用c++实现matlab函数系列教程-exppdf函数
- 错过了粽子不要紧,只是不要错过Ta!
- 在lua的string库和正则表达式
- 微信weui框架页面html,样式库 WeUI for Work
- 最新Keil MDK 5.37下载
- Css实现雷达扫描动画效果
- 透明图片怎么发给别人_新手微商没生意咋办?微商怎么做如何推广?不放弃微信就是等死!...
- Opengl ES之矩阵变换
- 如何注册微信个人公众号,教程来啦!怎样注册微信个人公众订阅号
- php微信支付na,PHP公众号支付宝支付实现
- ant design pro v2 - 权限控制