速通python加密之SHA加密
SHA加密
SHA加密(Secure Hash Algorithm,安全散列算法)是一系列密码散列函数的统称,由美国国家安全局(NSA)设计,经美国国家标准与技术研究院(NIST)标准化,主要用于数据完整性校验、密码存储、数字签名等安全场景。其核心功能是将任意长度的输入数据转换为固定长度的哈希值(消息摘要),具有单向性和抗碰撞性(不同输入生成相同哈希值的概率极低)。
常见SHA算法版本及特点:
-
SHA-1
- 输出长度:160位(40个十六进制字符)。
- 现状:因2005年被证明存在哈希碰撞漏洞(不同输入可生成相同哈希值),安全性不足,已被淘汰,不再用于安全敏感场景(如SSL证书、密码存储)。
-
SHA-2系列
包含SHA-224、SHA-256、SHA-384、SHA-512等,是目前应用最广泛的版本:- 输出长度:分别对应224位、256位、384位、512位(十六进制字符数为56、64、96、128位)。
- 特点:抗碰撞性强,至今未被发现有效破解方法,安全性远高于MD5和SHA-1。
- 应用:广泛用于密码存储(如用户密码哈希)、区块链(如比特币用SHA-256)、数字证书、文件校验等。
-
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则作为备选方案,用于对算法多样性有更高要求的场景。