浅谈SHA算法

浅谈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算法的网站知网空间学术百科板块,内容非常丰富详细。

你可能感兴趣的:(笔记,总结经验,编程,哈希算法,算法,安全性测试,密码)