浅谈SHA算法

本文分享了如何在Python中使用SHA系列算法(SHA-1和SHA-256),包括它们的基本概念、安全风险和实际密码验证案例。特别强调了SHA-1的过时与SHA-2/3的安全性,并推荐了专业的学术资源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

浅谈SHA算法


​ 今天做一个Python案例练习,用到了sha模块来处理密码。以前也了解一些sha算法的相关概念,今天再温习一下,整理成文与大家分享一下。安全散列算法(Secure Hash Algorithm, SHA)是一种从输入字符串中提取无意义的随机字符串(摘要)的方法。这个算法背后的思想是,几乎不可能创建具有指定摘要的字符串,因此即便你知道密码的摘要,也无法重建密码或创建一个具有该摘要的密码。这意味着你可将所提供的密码的摘要与存储的正确密码的摘要进行比较,而不用对密码本身进行比较。使用这样的方法,无须将密码本身存储在源代码中,这样阅读代码的人根本不知道密码是什么。SHA一系列算法: SHA-0、 SHA-1、 SHA-2和SHA-3。

警告

目前SHA-0和SHA-1已被发现存在一些缺陷,SHA1算法现在已经不是非常安全了。如果你要使用SHA算法来计算密码的散列值,请使用SHA-2或SHA-3。当前,最安全的密码散列函数是bcrypt,但没有任何东西是万无一失的

Python操作命令如下:

# SHA1算法,SHA-1摘要长度160bit
from hashlib import sha1


sha1(b'liuxiaowei').hexdigest()
Out[10]: '4c6e2ad7fb3c50641525ab91c6ef5b0f5c6d73ef'
sha1(b'liuxiaowoi').hexdigest()
Out[11]: '594cc9096f8afb797f12591593916f1fb526ee8f'
# SHA256算法,可以生成长度256bit的信息摘要。
from hashlib import sha256

sha256(b'liuxiaowei').hexdigest()
Out[15]: '7487976a68a2493e14af514306880f2679e1292601e55db0ce91c6c498278e74'
sha256(b'liuxiaowoi').hexdigest()
Out[16]: '6d6d2308ea8e0b68699881b89a826748c272b1c75672707436e3c20dc552cf4a'

判断密码是否正确,示例代码如下:

# password需要编码
if sha1(password.encode().hexidgest() == '7487976a68a2493e14af514306880f2679e1292601e55db0ce91c6c498278e74':
	print('Welcome to you')

如你所见,密码发生细微的变化时,得到的摘要完全不同。
注意⚠️

最后向大家推荐一个非常专业的关于sha算法的网站知网空间学术百科板块,内容非常丰富详细。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bruce_xiaowei

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值