python中内置hash模块hashlib

python中内置hash模块hashlib一、什么是hashhash,是一种对数据进行变换的算法,这种算法有以下特点:1.不定长输入,定长输出。2.不能被还原。由于算法过程中丢弃了一些数据,但是丢弃的是什么,丢弃了多少,谁也不知道,所以无法被还原,有点类似于有损压缩,丢弃的不可能被找回。3.相同输入,相同输出。4.抗碰撞性。即碰撞(不同输入产生相同输出)的几率特别小。5.抗篡改性。输入稍有改动,输出差别非常大。因为hash算…

大家好,又见面了,我是你们的朋友全栈君。

一、什么是hash

hash,是一种对数据进行变换的算法,这种算法有以下特点:
1.不定长输入,定长输出。
2.不能被还原。由于算法过程中丢弃了一些数据,但是丢弃的是什么,丢弃了多少,谁也不知道,所以无法被还原,有点类似于有损压缩,丢弃的不可能被找回。
3.相同输入,相同输出。
4.抗碰撞性。即碰撞(不同输入产生相同输出)的几率特别小。
5.抗篡改性。输入稍有改动,输出差别非常大。
因为hash算法的以上五个特点,所以它主要有以下几个用途:
1.数据结构(哈希表)。对于以键值对形式存储的数据,直接使用键地散列值作为存储地址,存储值。查找时就可以精准查找,不用遍历法一一比对那么麻烦。这是利用了hash的1,3,4特点。
2.密码储存。服务端现在都不存储用户名和密码了,直接存储它们的散列值,用户输入用户名和密码后也生成散列值,和数据库中的进行比对。这样即使数据被盗了 ,黑客也获取不了用户的密码。这是利用了hash的2,3,4,5特点。
3.文件签名。对文件签名,生成签名的散列值。在对方收到文件后对秘钥进行hash计算,看得到的散列值是否与签名相同。这是利用了hash的2,3,4,5特点。
4.文件校验。传输前后进行散列值的比较,同则文件没有损坏或篡改,不同则有损坏或篡改。比如有的网站为了禁止用户上传同样的视频,会对已上传的文件存储其散列值,通过比对新视频散列值是否已存在判断是否为重复上传的视频。如果你想上传相同视频,只要改掉一帧即可。这是利用了hash的2,3,4,5特点。

二、python中内置hash模块hashlib

hashlib模块提供了多种安全散列和消息摘要算法的公共接口。算法有sha1()、sha224()、sha256()、sha384()、sha512()和blake2b()、blake2s()。
hashlib用起来非常简单:

import hashlib
#第一步架锅
hs=hashlib.sha256()
#第二步放菜
hs.update(b'zhang')
#第三步出锅
hs_mg=hs.hexdigest()
print(hs_mg)

14bbfb46cb710ab5cf477269d856fc79d4d5b31cfbe466a37a43b1537e0693a4
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/134200.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • Nginx流媒体服务器搭建「建议收藏」

    Nginx流媒体服务器搭建「建议收藏」1.基础包下载1.1基础清单版本系统版本:CentOS7.6Nginx版本:1.20.1nginx-vod-module版本:1.29Nginx安装方面可以看我的另一篇文章Nginx笔记注意各个组件版本,可能会产生一些版本冲突1.2nginx-vod-module下载nginx点播模块,支持自动切片等功能,详细可直接去项目Gitwgethttps://github.com/kaltura/nginx-vod-module/archive/refs/tags/1.28.tar.

    2022年10月23日
  • java Map遍历的5种方法和一些基本使用

    java Map遍历的5种方法和一些基本使用一:基本使用Map<String,Integer>map=newHashMap<>();map.put("a",1);map.put("b",2);booleanb=map.containsKey("3");//map中是否包含key为3的键值。System.out.pr.

    2022年9月21日
  • 第八章 软件项目团队管理

    第八章 软件项目团队管理本章内容提纲8.1软件项目团队管理概述8.2项目组织的规划8.3团队人员获取8.4团队建设和日常管理8.5沟通管理8.6软件专业人员的非技术素养8.1软件项目团队管理概述什么是软件项目团队?   软件项目团队是由软件项目的不同干系人所组成的,具有共同目标、紧密协作的集体。软件项目团队包括所有项目干系人:项目发起人、资助者、项目组(开发团队)、供应商、客户等。有时,软件项目团队特指项…

    2022年6月13日
  • 两位数乘法的速算方法(二)

    两位数乘法的速算方法(二)两位数乘法的速算方法(二)一、被乘数首尾相同1. 乘数首尾互补公式推导:(10a+a)(10b+10-b)=100ab+10(ax(10-b)+ab)+a(10-b)=100ab+100a+ab=100a(b+1)+ab 速算方法:1.乘数首位加1,得出的和与被乘数首位相乘,得数作为前积;2.尾数相乘,得数作为后积,没有十位用0补; 应用举例:66×3

    2022年5月2日
  • BP神经网络原理及matlab实例

    BP神经网络原理及matlab实例转载:http://blog.csdn.net/u013007900/article/details/50118945上一次我们讲了M-P模型,它实际上就是对单个神经元的一种建模,还不足以模拟人脑神经系统的功能。由这些人工神经元构建出来的网络,才能够具有学习、联想、记忆和模式识别的能力。BP网络就是一种简单的人工神经网络。 本文具体来介绍一下一种非常常见的神经网络模型——反

    2022年7月20日
  • 安卓报错:java.lang.RuntimeException: Unable to start activity ComponentInfo—getSupportActionBar()为null

    安卓报错:java.lang.RuntimeException: Unable to start activity ComponentInfo—getSupportActionBar()为nulljava.lang.RuntimeException:UnabletostartactivityComponentInfo—getSupportActionBar()为null。

    2022年7月25日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号