浅谈SHA算法

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

相关文章
|
9月前
|
算法 数据安全/隐私保护
火山中文编程 -- MD5算法和SHA算法
火山中文编程 -- MD5算法和SHA算法
75 0
火山中文编程 -- MD5算法和SHA算法
|
6月前
|
算法 安全 JavaScript
安全哈希算法:SHA算法
安全哈希算法:SHA算法
151 1
安全哈希算法:SHA算法
|
8月前
|
存储 算法 安全
深入理解SHA系列哈希算法:安全性的保障与演进
深入理解SHA系列哈希算法:安全性的保障与演进
|
9月前
|
安全 算法 数据库
MD5、SHA、DES、AES、RSA的算法说明
【5月更文挑战第10天】MD5、SHA、DES、AES、RSA的算法说明
438 2
|
9月前
|
算法 安全 JavaScript
安卓逆向 -- 算法基础(SHA)
安卓逆向 -- 算法基础(SHA)
108 0
|
9月前
|
算法 Android开发
安卓逆向 -- 自吐算法(MD5和SHA)
安卓逆向 -- 自吐算法(MD5和SHA)
80 0
|
9月前
|
算法 安全 Java
SHA - 加密算法简要介绍与JAVA实现
SHA - 加密算法简要介绍与JAVA实现
122 1
|
C语言
SHA加密算法
SHA加密算法
83 0
|
存储 算法 安全
【算法】Java实现SHA算法
SHA(Secure Hash Algorithm)是一系列密码学哈希函数的集合,用于将输入数据转换为固定大小的哈希值。SHA算法由美国国家安全局(NSA)设计,并由美国国家标准与技术研究所(NIST)发布为标准。
252 0
|
算法 数据安全/隐私保护
火山中文编程 -- MD5算法和SHA算法
火山中文编程 -- MD5算法和SHA算法
156 0
火山中文编程 -- MD5算法和SHA算法

热门文章

最新文章