Python 加密与哈希的使用边界
发布时间 - 2026-01-21 00:00:00 点击率:次加密用于可逆保护数据机密性,如Fernet存储API密钥;哈希用于不可逆验证完整性,如bcrypt存密码;二者不可互换,错误使用会导致安全漏洞或功能失效。
加密和哈希在 Python 中常被混用,但它们解决的问题完全不同:加密是可逆的,用于保护数据机密性;哈希是不可逆的,用于验证数据完整性或身份。选错方法可能导致安全漏洞或功能失效。
什么时候该用加密(如 Fernet、AES)
当你需要之后还原原始数据时,必须使用加密。典型场景包括:存储用户敏感信息(如 API 密钥、支付令牌)、传输前保护配置项、实现端到端消息保密。
- Python 标准库 cryptography 提供 Fernet(对称加密,简单易用),适合单密钥场景
- 避免自己实现 AES 模式(如 CBC、GCM),优先用 Fernet 封装,它自动处理 IV、填充和认证
- 密钥必须安全保管——不能硬编码,建议用环境变量 + 密钥管理服务(如 HashiCorp Vault)
什么时候该用哈希(如 hashlib、bcrypt)
当你只需要确认“数据没被篡改”或“密码是否正确”,且不需要还原原文时,必须用哈希。典型

- 存密码绝不用 hashlib.sha256(password.encode()) —— 它太快、无盐、易被彩虹表攻击
- 用 bcrypt 或 passlib,它们内置加盐与自适应迭代,能抵御暴力破解
- 校验文件或接口签名可用 hashlib.sha256(),但需注意:相同输入永远得相同输出,不涉及密钥
别把哈希当加密来“解密”
有人尝试用字典攻击或查表“反解” SHA256,这是误解哈希本质。SHA256 不是加密算法,没有密钥,也没有解密过程。它的设计目标就是单向性。
- 若业务逻辑要求“找回密码”,说明需求本身错误——应提供重置流程,而非解密
- 用哈希做“token 验证”时,如果还希望携带有效期或用户 ID,应改用 JWT(含签名+载荷)或加密 token
- 哈希值比较务必用 hmac.compare_digest(),防止时序攻击
加密与哈希混合使用的合理场景
真实系统中二者常配合:例如登录流程中,密码用 bcrypt 哈希存储;登录成功后生成的 session token 用 Fernet 加密,防止客户端篡改。
- 上传文件时,先计算 sha256(file) 存入数据库,下载时再校验——这是哈希
- 同一文件内容若需加密传输,则用 AES 加密后发送,并附上加密前的哈希值供接收方校验完整性——这是组合
- 不要对哈希值再加密(如 encrypt(sha256(pwd)))——既不增加安全性,又引入冗余复杂度
# word
# python
# 编码
# ssl
# session
# mac
# 环境变量
# 标准库
# crypto
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
深圳网站制作平台,深圳市做网站好的公司有哪些?
Python函数文档自动校验_规范解析【教程】
JavaScript数据类型有哪些_如何准确判断一个变量的类型
b2c电商网站制作流程,b2c水平综合的电商平台?
大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?
香港服务器选型指南:免备案配置与高效建站方案解析
为什么要用作用域操作符_php中访问类常量与静态属性的优势【解答】
移动端脚本框架Hammer.js
教学论文网站制作软件有哪些,写论文用什么软件
?
浅谈Javascript中的Label语句
百度浏览器网页无法复制文字怎么办 百度浏览器复制修复
个人摄影网站制作流程,摄影爱好者都去什么网站?
怎么用AI帮你为初创公司进行市场定位分析?
如何在IIS中新建站点并配置端口与物理路径?
佐糖AI抠图怎样调整抠图精度_佐糖AI精度调整与放大细化操作【攻略】
高端云建站费用究竟需要多少预算?
Laravel如何为API生成Swagger或OpenAPI文档
rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted
创业网站制作流程,创业网站可靠吗?
BootStrap整体框架之基础布局组件
怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?
Edge浏览器如何截图和滚动截图_微软Edge网页捕获功能使用教程【技巧】
详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)
公司门户网站制作流程,华为官网怎么做?
如何基于PHP生成高效IDC网络公司建站源码?
Laravel如何实现文件上传和存储?(本地与S3配置)
极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?
Angular 表单中正确绑定输入值以确保提交与验证正常工作
如何在阿里云购买域名并搭建网站?
教你用AI将一段旋律扩展成一首完整的曲子
Laravel Seeder怎么填充数据_Laravel数据库填充器的使用方法与技巧
微信小程序 wx.uploadFile无法上传解决办法
如何在腾讯云免费申请建站?
Linux系统命令中tree命令详解
微信h5制作网站有哪些,免费微信H5页面制作工具?
如何在云主机上快速搭建多站点网站?
电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?
Laravel如何实现邮箱地址验证功能_Laravel邮件验证流程与配置
Laravel如何实现密码重置功能_Laravel密码找回与重置流程
如何快速生成专业多端适配建站电话?
laravel怎么为API路由添加签名中间件保护_laravel API路由签名中间件保护方法
laravel服务容器和依赖注入怎么理解_laravel服务容器与依赖注入解析
如何用y主机助手快速搭建网站?
Laravel Eloquent:优雅地将关联模型字段扁平化到主模型中
网站建设要注意的标准 促进网站用户好感度!
浏览器如何快速切换搜索引擎_在地址栏使用不同搜索引擎【搜索】
如何在服务器上配置二级域名建站?
Laravel怎么定时执行任务_Laravel任务调度器Schedule配置与Cron设置【教程】
如何撰写建站申请书?关键要点有哪些?
Laravel如何理解并使用服务容器(Service Container)_Laravel依赖注入与容器绑定说明

