python内置模块hashlib对于字符串的加密解密加盐
hash是一类算法而hashlib模块是Python的一个内置模块,主要功能是使用对应的hash算法,加密二进制内容解密二进制内容
常见的hash算法有md5、sha1,sha256, sha512等
特点
1.内容敏感,那怕一个很小的字符发生改变都很明显
2.不可逆,不能逆向求值
3.计算极快,长度固定
加密
import hashlib# 创建哈希对象
# hash_obj = hashlib.md5()
# hash_obj = hashlib.sha1()
# hash_obj = hashlib.sha512()
# hash_obj = hashlib.sha384()
hash_obj = hashlib.sha256()# 添加需要加密的hash字符串,可以多次添加(多次添加的多个字符串会互相拼接)
# 因为哈希处理的是二进制的内容,所以字符串需要编码成二进制
hash_obj.update("我是哈希的测试字符串".encode("utf-8"))
hash_obj.update("我是哈希的测试字符串第二节".encode("utf-8"))
hash_obj.update("asadsdssdsd123444".encode("utf-8"))
hash_obj.update("sasartr6767687878.;*&^%$#@".encode("utf-8"))# 打印加密结果
ret = hash_obj.hexdigest()
print(ret)# 9052a9b6d6d499c286eaf299191c6ba0f8ce28b3f599259d83f92092c9e76ebb# 分开拼接和整个传进去的加密结果是一样的
hash_obj = hashlib.sha256()
hash_obj.update("我是哈希的测试字符串我是哈希的测试字符串第二节asadsdssdsd123444sasartr6767687878.;*&^%$#@".encode("utf-8"))
ret = hash_obj.hexdigest()
print(ret)
# 9052a9b6d6d499c286eaf299191c6ba0f8ce28b3f599259d83f92092c9e76ebb
二进制文件加密
import hashlib
with open(r"C:\Users\xxxxxx\Desktop\xxxxxxx_python_test_dir\Python-UIAutomation-for-Windows-master.zip", 'rb') as file:file_binary_data = file.read()
hash_obj = hashlib.sha256()
hash_obj.update(file_binary_data)
ret = hash_obj.hexdigest()
print(ret)
# 512208dd4cad5a1e2e6764a578e18aa97c738e7fce9cce75d3c56beecad5bc98
密码加盐
密码加盐其实就是以特定规则给你的初始加密对象里面掺杂一些东西,然后再用哈希加密,这样的话就算被人破解了加密结果,他也不知道你的加盐规则是啥,保护了加密内容
# 初始加密字符串
hash_obj = hashlib.sha256()
target_str = "我是哈希的测试字符串"
hash_obj.update(target_str[:5].encode("utf-8"))
hash_obj.update(target_str[5:].encode("utf-8"))
ret = hash_obj.hexdigest()
print(ret)
# 2b7f9e5ffa533012e1c493a4dd4f47fdd053d1bc641cd74649c5bf8e0285c317# 加盐(这里的加盐规则是在字符串的中间加盐,盐的内容为字符串"我是加的盐")
hash_obj = hashlib.sha256()
target_str = "我是哈希的测试字符串"
hash_obj.update(target_str[:5].encode("utf-8"))
hash_obj.update("我是加的盐".encode("utf-8"))
hash_obj.update(target_str[5:].encode("utf-8"))
ret = hash_obj.hexdigest()
print(ret)
# 4fe963dd8bd77d88494e1d698a273b0f02177062ca4bf76028f236fa1a74f390
相关文章:
python内置模块hashlib对于字符串的加密解密加盐
hash是一类算法而hashlib模块是Python的一个内置模块,主要功能是使用对应的hash算法,加密二进制内容解密二进制内容 常见的hash算法有md5、sha1,sha256, sha512等 特点 1.内容敏感,那怕一个很小的字符发生改变都很明显 2.不可逆,不能逆向求值…...
获取客户端请求IP及IP所属城市
添加pom依赖 <dependency> <groupId>org.lionsoul</groupId> <artifactId>ip2region</artifactId> <version>2.6.5</version> </dependency> public class IpUtil { private…...
【洛谷 P1106】删数问题 题解(贪心+字符串)
删数问题 题目描述 键盘输入一个高精度的正整数 N N N(不超过 250 250 250 位),去掉其中任意 k k k 个数字后剩下的数字按原左右次序将组成一个新的非负整数。编程对给定的 N N N 和 k k k,寻找一种方案使得剩下的数字组成…...
【Python · PyTorch】线性代数 微积分
本文采用Python及PyTorch版本如下: Python:3.9.0 PyTorch:2.0.1cpu 本文为博主自用知识点提纲,无过于具体介绍,详细内容请参考其他文章。 线性代数 & 微积分 1. 线性代数1.1 基础1.1.1 标量1.1.2 向量长度&…...
建模和图表工具:Software Ideas Modeler Crack
用于图表、软件设计和分析的 CASE 工具 Software Ideas Modeler 是一款智能CASE 工具和 图表软件,支持 UML、SysML、ERD、BPMN、ArchiMate、流程图、用户故事、线框图。 提升用户体验和人工智能集成 - Software Ideas Modeler 14.05 最近发布的 14.05 版本带来了一…...
Android开发,车载通讯应用——binder通讯原理解析
Binder简单理解 简单来说,Binder 就是用来Client 端和 Server 端通信的。并且 Client 端和 Server 端 可以在一个进程也可以不在同一个进程,Client 可以向 Server 端发起远程调用,也可以向Server传输数据(当作函数参数来传&#…...
[算法]求n!在m进制下末尾有多少个0
参考链接:求n!在m进制下末尾0的个数_.!零n,,m-CSDN博客 我们这里和参考链接不同 使用结构体去存储每个因数的信息 然后使用变量index作为索引,其最终值为因数的个数 具体原理: 例子1:求9!在10进制下的…...
mysql之用户管理、权限管理、密码管理
用户管理 创建用户create user 杨20.0.0.13 identified by 123; 用户重命名rename user 杨20.0.0.13 to yang20.0.0.13; 删除用户drop user 杨20.0.0.13; 权限管理 查看用户权限show grants for 杨20.0.0.13; 赋予用户权限grant all privileges on *.* to 杨localhost id…...
图情档核心期刊 | 北大核心、CSSCI、CSCD
中文核心期刊要目总览(A Guide to the Core Journal of China, 简称北大核心): 主办单位:北京大学图书馆更新频率:北大核心在2008年之前每4年更新研究和编制出版一次,2008年之后,改为…...
Mac上具好用的屏幕录像工具(Omi录屏专家)Screen Recorder By Omi Mac 下载安装详细教程
Omi 录屏专家 是 Mac 上的一款出色的录音工具,它让您能够在Mac电脑上轻松录制和保存高质量音频。这款应用拥有简单直观的操作界面,无论我们水平如何,都可以轻松捕捉录制卓越的音质和录像视频。 该版本的 Omi 安装后可以直接支持最高 4K 60帧…...
牛客网刷题-(8)
🌈write in front🌈 🧸大家好,我是Aileen🧸.希望你看完之后,能对你有所帮助,不足请指正!共同学习交流. 🆔本文由Aileen_0v0🧸 原创 CSDN首发🐒 如…...
oracle 重启步骤及踩坑经验
oracle 重启步骤及踩坑经验 标准重启步骤 切换到oracle用户 su - oracle关闭监听 lsnrctl stop杀掉oracle有关进程 ps -ef|grep $ORACLE_SID|grep -v ora_|grep LOCALNO|awk {print $2}|xargs kill -9#查询pid ps -ef|grep $ORACLE_SID|grep -v ora_|grep LOCALNO|awk {p…...
处理mysql数据量大查询缓慢问题(最少百万才有差别)
我建了两个表,一个售后单表,一个售后商品明细表,都是五十个字段。 select * FROM (select id, as_id, as_date, outer_as_id, so_id, type, created, modified, status, status_name, shop_status, shop_status_name, remark, question_type,…...
element-plus走马灯不显示
问题描述 依赖正确,代码用法正确,但是element-plu走马灯就是不显示!! <div class"content"><el-carousel height"150px" width"200px"><el-carousel-item v-for"item in 4&qu…...
【精】UML及软件管理工具汇总
目录 1 老七工具(规划质量) 1.1 因果图(鱼骨图、石川图) 1.2 控制图 1.3 流程图:也称过程图 1.4 核查表:又称计数表 1.5 直方图 1.6 帕累托图 1.7 散点图…...
【uniapp+vue3】scroll-view实现纵向自动滚动及swiper实现纵向自动滚动
scroll-view本身不支持自动滚动,通过scroll-top属性控制滚动,但是不可以循环滚动 <scroll-view class"notice-bar" scroll-y"true" ref"scrollViewRef" :scroll-top"data.scrollViewTop"scroll-with-animati…...
this.refs[‘tagInput‘].refs.input.focus()和this.$refs[‘tagInput‘].focus()区别
this.$refs[tagInput].$refs.input.focus()和this.$refs[tagInput].focus()两者之间的选择取决于你的组件结构和如何访问DOM元素。 1.this.$refs[tagInput].$refs.input.focus(): 2.这种语法假设你的this.$refs[tagInput]是一个组件实例,并且这个组件实例有一个名为…...
电脑硬件坏了,如何维修?
在电子设备日益普及的今天,电脑已成为很多人生活和工作中不可或缺的工具,然而在使用过程中很容易遇见电脑故障之类的问题,这些问题十有八九来自硬件,那么针对电脑硬件问题,该如何维修? 一般来说,…...
elementplus日期时间选择器组件显示很窄
问题描述 似乎是elementplus原生组件的宽度是和父组件相关的 只要父组件很窄就会让弹窗也很窄,但其实两者的宽度不必有这种限制 解决思路 打开控制条查看元素位置以及css样式的class名 发现类名为el-picker-panel__body 尝试重构 css内写样式 .el-picker-pane…...
第三方软件测评选择远程测试好还是现场测试好?
如今许多软件企业在软件开发过程完成之后,会将软件测试工作交由第三方软件测评机构来进行,那么做第三方软件测试时,远程测试和现场测试哪个更好呢?我想这是许多软件企业都十分关注的问题,今天卓码软件测评小编将对以上问题作出简…...
对比直接使用厂商API体验Taotoken聚合调用在延迟上的优化感受
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 对比直接使用厂商API体验Taotoken聚合调用在延迟上的优化感受 作为一名长期直接调用单一模型API的开发者,我的日常工作…...
多VM同时启动卡爆?2种方法设置启动延迟,避免启动风暴
在虚拟化运维中,多台虚拟机(VM)同时启动时,很容易引发“启动风暴”——CPU、内存、存储IO瞬间被占满,导致所有虚拟机启动缓慢、卡顿,甚至部分VM启动失败,严重影响业务正常运行。其实解决方法很简…...
思源宋体TTF:免费专业中文字体终极使用指南
思源宋体TTF:免费专业中文字体终极使用指南 【免费下载链接】source-han-serif-ttf Source Han Serif TTF 项目地址: https://gitcode.com/gh_mirrors/so/source-han-serif-ttf 还在为中文排版找不到合适的免费字体而烦恼吗?思源宋体TTF正是你需要…...
别再只用ARIMA了!用Python+statsmodels搞定SARIMA预测电商销量(附完整代码)
电商销量预测实战:用PythonSARIMA破解季节性销售波动 电商销量预测的痛点与SARIMA的破局之道 每逢大促季节,电商运营团队总会陷入两难困境:备货不足错失销售良机,库存积压又导致资金周转困难。传统ARIMA模型在预测日常销量时表现尚…...
别再傻傻分不清了!Lua中load和loadstring到底怎么用?一个例子讲透
深入解析Lua中的动态代码加载:load与loadstring的实战指南 在Lua开发中,动态代码加载是一个强大但容易引发困惑的功能。许多开发者在不同环境下使用load和loadstring时,经常会遇到各种报错信息,比如"bad argument #1 to load…...
3步解决Windows热键冲突:Hotkey Detective强力侦测工具指南
3步解决Windows热键冲突:Hotkey Detective强力侦测工具指南 【免费下载链接】hotkey-detective A small program for investigating stolen key combinations under Windows 7 and later. 项目地址: https://gitcode.com/gh_mirrors/ho/hotkey-detective 你是…...
Bilibili-Evolved:打造无网络依赖的哔哩哔哩增强体验技术解析
Bilibili-Evolved:打造无网络依赖的哔哩哔哩增强体验技术解析 【免费下载链接】Bilibili-Evolved 强大的哔哩哔哩增强脚本 项目地址: https://gitcode.com/gh_mirrors/bi/Bilibili-Evolved 在当今网络环境复杂多变的时代,用户对Web应用的稳定性要…...
告别元器件搜索焦虑:立创EDA专业版+立创商城联动使用技巧全解析
告别元器件搜索焦虑:立创EDA专业版立创商城联动使用技巧全解析 在电子设计领域,元器件选型与供应链管理一直是工程师面临的核心挑战之一。当项目进入关键阶段,一个看似简单的0.1uF电容缺货或封装不匹配,就可能引发连锁反应&#x…...
【免费下载】 树莓派4B原理图资源下载
树莓派4B原理图资源下载 【下载地址】树莓派4B原理图资源下载分享 树莓派4B原理图资源下载本仓库提供了一个方便的途径,供大家下载树莓派4B的原理图资源文件 项目地址: https://gitcode.com/open-source-toolkit/ae590 本仓库提供了一个方便的途径࿰…...
别再只会插卡开机了!手把手带你用APDU命令探索手机SIM卡里的文件迷宫
解码SIM卡文件系统:用APDU命令探索移动通信的微观世界 当你把SIM卡插入手机时,它就像一把打开移动网络大门的钥匙。但鲜为人知的是,这张小小的芯片内部运行着一个完整的文件系统,其复杂程度堪比微型操作系统。本文将带你用APDU命令…...
