当前位置: 首页 > news >正文

速通python加密之SHA加密

SHA加密

SHA加密(Secure Hash Algorithm,安全散列算法)是一系列密码散列函数的统称,由美国国家安全局(NSA)设计,经美国国家标准与技术研究院(NIST)标准化,主要用于数据完整性校验、密码存储、数字签名等安全场景。其核心功能是将任意长度的输入数据转换为固定长度的哈希值(消息摘要),具有单向性和抗碰撞性(不同输入生成相同哈希值的概率极低)。

常见SHA算法版本及特点:

  1. SHA-1

    • 输出长度:160位(40个十六进制字符)。
    • 现状:因2005年被证明存在哈希碰撞漏洞(不同输入可生成相同哈希值),安全性不足,已被淘汰,不再用于安全敏感场景(如SSL证书、密码存储)。
  2. SHA-2系列
    包含SHA-224、SHA-256、SHA-384、SHA-512等,是目前应用最广泛的版本:

    • 输出长度:分别对应224位、256位、384位、512位(十六进制字符数为56、64、96、128位)。
    • 特点:抗碰撞性强,至今未被发现有效破解方法,安全性远高于MD5和SHA-1。
    • 应用:广泛用于密码存储(如用户密码哈希)、区块链(如比特币用SHA-256)、数字证书、文件校验等。
  3. SHA-3系列

    • 基于全新的“海绵结构”设计,与SHA-2算法原理不同,是NIST为应对潜在风险于2015年标准化的替代方案。
    • 输出长度与SHA-2对应版本一致(如SHA3-256、SHA3-512),兼容性更好,安全性同等可靠,但目前应用不如SHA-2普及。

SHA加密的核心特性:

  • 固定输出长度:不同版本输出长度固定(如SHA-256始终生成64位十六进制字符串)。
  • 单向性:无法从哈希值反推原始数据,哈希过程不可逆。
  • 抗修改性:原始数据微小改动会导致哈希值完全不同,可用于校验数据是否被篡改。

应用场景:

  • 密码存储:将用户密码转换为SHA哈希值后保存(常配合“盐值”增强安全性)。
  • 数据完整性校验:如软件安装包、文件传输后的哈希值比对,确认未被篡改。
  • 数字签名:与私钥结合生成签名,用于验证数据来源和完整性(如电子合同、区块链交易)。

示例:(注意,这里使用的是sha1)

"""
@File    :01SHA家军.py
@Editor  : 百年
"""
'''
sha1
sha256
sha512均为sha系列的
随着数字的增大复杂度也增加
sha系列也是hash散列摘要算法,写法几乎是和md5一致'''from hashlib import sha1  #也可以导入sha256等,下面的代码逻辑都是一致的#step1 创建加密对象
obj = sha1(b'liangnianbankunkun') #tips:加盐#step2 传入要加密的数据
obj.update('derder'.encode('utf-8'))#step3 输出结果
res = obj.hexdigest()print(res)# e6aaa600018a9e1b198b7529ce34d3f5f7cd184b

总之,SHA系列是目前主流的安全哈希算法,其中SHA-256因平衡了安全性和计算效率,成为最广泛应用的版本;SHA-3则作为备选方案,用于对算法多样性有更高要求的场景。

http://www.dtcms.com/a/299525.html

相关文章:

  • MySQL进阶学习与初阶复习第三天
  • AWD的攻击和防御手段
  • 在 C# 中,问号 ? 的一些作用
  • 0.深度学习环境配置步骤
  • 前端开发 Vue 结合Sentry 实现性能监控
  • GitHub的免费账户的存储空间有多少?
  • 明辨 JS 中 prototype 与 __proto__
  • 学习嵌入式的第三十天-数据结构-(2025.7.21)网络编程
  • Netty中AbstractChannelHandlerContext源码分析
  • Springboot+MongoDB简单使用示例
  • Java 大视界 -- Java 大数据在智能安防视频监控系统中的视频语义理解与智能检索进阶(365)
  • MySQL 中 VARCHAR(50) 和 VARCHAR(500) 的区别
  • Python训练Day24
  • 机器学习入门:线性回归详解与实战
  • Javaweb————HTTP的九种请求方法介绍
  • VTK交互——CallData
  • MySQL操作进阶
  • setsockopt函数概念和使用案例
  • python---字典(dict)
  • 瑞吉外卖学习笔记
  • 基于FPGA的SPI控制FLASH读写
  • 【C++高效编程】STL queue深度剖析:从底层原理到高级应用
  • 什么是ICMP报文?有什么用?
  • 以实时语音转文字项目为例,介绍一下如何手动部署python应用到Linux服务器(附脚本)
  • 根据ip获取地址库
  • 【Git】Git下载全攻略:从入门到精通
  • 如何在 Git 中控制某些文件不被提交?
  • 图解网络-小林coding笔记(持续更新)
  • 【2025最新】浏览器插件开发选型建议:WXT、Plasmo、原生TS/JS
  • 融合为体,AI为用:数据库在智能时代的破局之道