哈希werkzeug.security:

此模块包含了加盐哈希函数方法.

  • generate_password_hash:加密
  • check_password_hash: 验证

常见场景:

  • 用于Flask登录验证模块.
from werkzeug.security import generate_password_hash, check_password_hash#generate_password_hash:哈希加盐
users=[{'username': 'Tom', 'password': generate_password_hash('111111')},{'username': 'Michael', 'password': generate_password_hash('123456')}
]print(users)
bools=check_password_hash(users[0]['password'], "111111") #True or False
print(bools)#输出结果:
"""
[{'username': 'Tom', 'password': 'pbkdf2:sha256:260000$vEXq6oPv5K5FsCFM$cb2a2630a3fba671b1ed2f48a14cbc4073aeba13cc914e79bf4abbc3ea07aadd'}, {'username': 'Michael', 'password': 'pbkdf2:sha256:260000$r5648R87Dx8EOWR2$ad370d27537407dcdfe6d13db4e48bea9c993f1af26e5d07300f3b3f7126ae68'}]False
"""

AES加密解密:

模块:Crypto.Cipher 、Crypto.Util.Padding

注:window和Linux下载模块不同,且注意加密密钥(KEY)要保密,不要流出:

  • window:pip install pycryptodome
  • Linux:pip install pycrypto

常见场景:

  • 用于应用后端与其他项目交互传数据的时候加密解密.
import json
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad
import hashlib,base64#key的长度必须为16位,不然报错
AES_KEY="!@qw#$ert%^y&*u("class AES_Convert:def __init__(self):self.key = AES_KEY#aes 加密def Encryption(self,aes_str):# 使用key,选择加密方式aes = AES.new(self.key.encode('utf-8'), AES.MODE_ECB)pad_pkcs7 = pad(aes_str.encode('utf-8'), AES.block_size, style='pkcs7')  # 选择pkcs7补全encrypt_aes = aes.encrypt(pad_pkcs7)# 加密结果encrypted_text = str(base64.encodebytes(encrypt_aes), encoding='utf-8')  # 解码encrypted_text_str = encrypted_text.replace("\n", "")return encrypted_text_str# aes解码def Decryption(self, aes_str):aes = AES.new(self.key.encode('utf-8'), AES.MODE_ECB)# 优先逆向解密base64成bytesbase64_decrypted = base64.decodebytes(aes_str.encode(encoding='utf-8-sig'))decrypted_text = str(aes.decrypt(base64_decrypted), encoding='utf-8-sig').replace('', '')# 注意这里解密会产生乱码,所以加密数据时可以用正则匹配掉乱码,具体问题具体对待# 这里传输的是json字符可以用这种方式匹配# print(decrypted_text)# decrypted_text=re.findall('.*\}',decrypted_text)[0]# decrypted_text = re.findall('.*\]', decrypted_text)[0]return decrypted_textif __name__ == '__main__':datalist=[{"username":"Ton","password":"Ton@.com"},{"username":"Michael","password":"Michael@.com"},]aes_str=json.dumps(datalist)EncryptionData = AES_Convert().Encryption(aes_str)DecryptionData = AES_Convert().Decryption(EncryptionData)print("加密数据:"+EncryptionData)print("加密解密:"+DecryptionData)#输出:
"""
加密数据:7+S0Fk5WHEZjOqbAYV/x3CpJ0lg6kTJU8RKRc2+CsR8rY/1Q8Mw9DrAAVGx/y0/iYoO/0l9Yb6wUdH11fuEHvZG6S+zQdrTN/flF2qxq383hyNETNW7ZCZXv2bTtEaG4z9noeXj6SgH3lhNTX5hZOw==
加密解密:[{"username": "Ton", "password": "Ton@.com"}, {"username": "Michael", "password": "Michael@.com"}]
"""

JWT加密解密:

python3内置模块:jwt

注:注意加密密钥(KEY)要保密,不要流出

常见场景:

  • 用于应用前后端认证时的token.
import jwt,datetime
SECRECT_KEY="!@qw#$ert%^y&*u("class Jwt:def __init__(self):self.SECRECT_KEY = SECRECT_KEY# 生成jwt 信息,加密def jwtEncoding(self,username=None,id=None, some='xxxx'):datetimes=datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")option = {"time":datetimes,"username":username,"id":id,"some":some}jwtencode = jwt.encode(option, self.SECRECT_KEY, algorithm='HS256')return jwtencode# 解密jwt 信息def jwtDecoding(self,token):try:decoded = jwt.decode(token, self.SECRECT_KEY, algorithms=['HS256'])except jwt.ExpiredSignatureError:decoded = {"error_msg": "is timeout !!", "some": None}except Exception:decoded = {"error_msg": "noknow exception!!", "some": None}return decodedif __name__ == '__main__':jwtencode = Jwt().jwtEncoding(username='admin', id=1)print(jwtencode)jwtdeode = Jwt().jwtDecoding(jwtencode)print(jwtdeode)#输出
"""
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0aW1lIjoiMjAyMS0wNy0wOSAxOToxMTozMyIsInVzZXJuYW1lIjoiYWRtaW4iLCJpZCI6MSwic29tZSI6Inh4eHgifQ._fwyzwnpeoI5fYBETc-R67T1mzxazMDkPtHvvWAZ4lo
{'time': '2021-07-09 19:11:33', 'username': 'admin', 'id': 1, 'some': 'xxxx'}
"""

[Python3]数据的加密解密相关推荐

  1. 与众不同 windows phone (28) - Feature(特性)之手机方向, 本地化, 应用程序的试用体验, 系统主题资源, 本地数据的加密解密...

    原文:与众不同 windows phone (28) - Feature(特性)之手机方向, 本地化, 应用程序的试用体验, 系统主题资源, 本地数据的加密解密 [索引页] [源码下载] 与众不同 w ...

  2. java使用DES加密方式,实现对数据的加密解密

    全栈工程师开发手册 (作者:栾鹏) java教程全解 java使用DES加密方式,实现对数据的加密解密.加密和解密中需要使用同一个秘钥 第一种方式,使用类型Key作为加密解密的共同秘钥. 测试代码 p ...

  3. 一种简单的,适合单片机的,数据加密解密方法,仅需要调用两个函数即可完成数据的加密解密

    一种简单的,适合单片机的,数据加密解密方法,仅需要调用两个函数即可完成数据的加密解密 本人原创,源码可移步:https://gitee.com/demyli/easy-encrypt.git /*** ...

  4. cocos2d-js 手游解密jsc和WebSocket数据aes加密解密分析②

    前面的http授权成功后,用的是WebSocket进行登录 Fiddler 抓包显示 双击进入插件详情,发现是加密的,那就进入js源码看看 js源码看看 搜索bufferToData后,得到关键代码 ...

  5. C# 数据的加密解密

    /// <summary> /// 加密数据 /// </summary> /// <param name="Text"></param& ...

  6. AES在线加密解密-附AES128,192,256,CBC,CFB,ECB,OFB,PCBC各种加密

    一.AES在线加密解密:AES 128/192/256位CBC/CFB/ECB/OFB/PCBC在线加密解密|在线工具|在线助手|在线生成|在线制作 http://www.it399.com/aes ...

  7. angular和JAVA实现aes、rsa加密解密,前后端交互,前端加解密和后端JAVA加解密实现

    今天实现了下AES和RSA加密解密,主要的功能是对前后端交互数据进行加密解密,为什么要用到两个算法呢,首先RSA默认的话加密长度是有限的100多个byte吧大约,并且需要公钥私钥,而AES加密没有限制 ...

  8. java php rsa加密解密算法_PHP rsa加密解密算法原理解析

    php服务端与客户端交互.提供开放api时,通常需要对敏感的部分api数据传输进行数据加密,这时候rsa非对称加密就能派上用处了,下面通过一个例子来说明如何用php来实现数据的加密解密 1.加密解密的 ...

  9. pgp解密 java_Java PGP加密解密实例教程详细操作步骤

    本文将一步步告诉大家PGP的使用步骤,看完大家就立马可以在项目及工作环境中使用起来,so easy!!! 1,首先了解什么是PGP,PGP的工作原理是什么?这个直接百度百科,我不啰嗦. PGP是英文 ...

最新文章

  1. 负载均衡中使用 Redis 实现共享 Session
  2. mongodb windwos 安装(转)
  3. ASP.NET基础教程-DataGrid表格控件-模板列的使用
  4. 20172311『Java程序设计』课程 结对编程练习_四则运算第一周阶段总结
  5. boost::geometry:::detail::overlay::get_clusters用法的测试程序
  6. aspen怎么做灵敏度分析_数据分析终极难题:数据分析怎么做才能驱动业务?
  7. django 修改html无变化,Django Pycharm 修改html后立即刷新页面
  8. ASP.NET使用Coolite.Ext.Web.dll,显示ext未定义的解决方法
  9. NetCore控制台实现自定义CommandLine功能
  10. 初涉网络流[EKdinic]
  11. django-rest-framework二--权限(转载)
  12. 直方图匹配的数学原理
  13. 凯恩帝绝对坐标清零_凯恩帝100T数控车床怎么把加工数量时间清零
  14. Java+Swing实现自助取款机(ATM)系统-TXT存储数据
  15. php实现五维雷达图,【数据可视化·图表篇】雷达图
  16. 用C语言将搜狗输入法词库转换成QQ拼音输入法词库
  17. Windows系统盘瘦身
  18. 8、C语言printf函数与scanf函数
  19. 阿里内部Redis宝典遭外泄极致经典:源码+实战+理论
  20. ubuntu18.04安装CUDA

热门文章

  1. eclipse怎么导入压缩包_eclipse压缩包安装教程
  2. .net学习笔记11--数据验证控件--RangeValidator
  3. 空间s与战争地形nbsp;系统思考与…
  4. Oracle 数据库一体机的崛起
  5. linux tty 教程,Linux 终端(TTY)
  6. ttys和tty_ttyS、tty,console和pty
  7. ubuntu 安装软件(强制)
  8. php获取qq号码,php获取qq用户昵称和在线状态(实例分析)
  9. Linux使用iPhone USB共享网络
  10. 普通初中理化生实验室的教学仪器配置标准