Hash一般翻译为“散列”,或“哈希”,是把任意长度的输入,通过散列算法,变成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,即散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不能根据散列值来唯一确定输入值。
简单的说是一种将任意长度的消息压缩成固定长度的消息的一种函数。
hash主要用于安全领域中加密算法,他把不同长度的信息转换成杂乱的128位的编码,这个128位的编码就叫HASH值。成都创新互联公司是一家集网站建设,通道企业网站建设,通道品牌网站建设,网站定制,通道网站建设报价,网络营销,网络优化,通道网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
>>> hash("123")
4880615334525398789
>>> hash("123")
4880615334525398789
>>> quit()
(venvP3) E:\PythonProject\python-test\BasicGrammer>python3
Python 3.6.2 (v3.6.2:5fd33b5, Jul 8 2017, 04:57:36) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> hash("123")
-5768810267372332319
>>> hash("123")
-5768810267372332319
>>>
MD5讯息摘要算法(Message-Digest Algorithm),一种被广泛使用的密码杂凑函数,可以产生出一个128位的散列值,用于确保信息传输完整一致。MD5之前有MD2,MD3,MD4
输入任意长度的信息,经过处理,输出为128位的信息(数字指纹),不同的输入得到不同的结果(结果具有唯一性)
1.压缩性:任意长度的数据,算出的MD5值的长度都是固定的。
2.容易计算:从原数据计算出MD5值很容易
3.抗修改性:对原数据进行任何改动,生成的MD5值区别都会很大
4.强抗碰撞:已知原数据和MD5,想要找到一个具有相同MD5值的数据是几乎不可能的
MD5是不可逆的,因为其算法是一种散列函数,使用的是hash算法,在计算过程中原文的部分信息是丢失了的。
1.防止篡改
2.防止看到明文
3.防止抵赖(数字签名)
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author: vita
import hashlib
m = hashlib.md5()
m.update(b"Hello")
m.update(b"It's me")
print(m.digest())
m.update(b"It's been a long time since last time we ...")
print(m.digest()) #2进制格式hash
print(len(m.hexdigest())) #16进制格式hash
E:\PythonProject\python-test\venvP3\Scripts\python.exe E:/PythonProject/python-test/BasicGrammer/test.py
b'{}\xd6Rz\xd4\x01\x05mJT\xbe\xb3m\x1eF'
b'\xc7~\xe3BD\xd6#\x10\x06\xcf\x96M\x98\xe9\xec\x96'
32
Process finished with exit code 0
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author: vita
import hashlib
#########md5############
md5 = hashlib.md5()
md5.update("admin".encode("utf-8"))
print("md5:",md5.hexdigest())
#########sha1############
sha1 = hashlib.sha1()
sha1.update("admin".encode("utf-8"))
print("sha1:",sha1.hexdigest())
#########sha256############
sha256 = hashlib.sha256()
sha256.update("admin".encode("utf-8"))
print("sha256:",sha256.hexdigest())
#########sha384############
sha384 = hashlib.sha384()
sha384.update("admin".encode("utf-8"))
print("sha384:",sha384.hexdigest())
#########sha512############
sha512 = hashlib.sha512()
sha512.update("admin".encode("utf-8"))
print("sha512:",sha512.hexdigest())
E:\PythonProject\python-test\venvP3\Scripts\python.exe E:/PythonProject/python-test/BasicGrammer/test.py
md5: 21232f297a57a5a743894a0e4a801fc3
sha1: d033e22ae348aeb5660fc2140aec35850c4da997
sha256: 8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918
sha384: 9ca694a90285c034432c9550421b7b9dbd5c0f4b6673f05f6dbce58052ba20e4248041956ee8c9a2ec9f10290cdc0782
sha512: c7ad44cbad762a5da0a452f9e854fdc1e0e7a52a38015f23f3eab1d80b931dd472634dfac71cd34ebc35d16ab7fb8a90c81f975113d6c7538dc69dd8de9077ec
Process finished with exit code 0
当前标题:hashlib模块
新闻来源:https://www.cdcxhl.com/article46/ijjgeg.html
成都网站建设公司_创新互联,为您提供面包屑导航、ChatGPT、App开发、网站导航、电子商务、企业网站制作
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联