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)
上一篇 2022年5月2日 下午2:20
下一篇 2022年5月2日 下午2:20


相关推荐

  • 微软OOXML正式成为国际标准 更名为OXML

    微软OOXML正式成为国际标准 更名为OXML  近日,ISO组织宣布,由于赢得了足够的支持,微软的OOXML文档格式已被批准为全球行业标准,并将其命名更改为“OpenXML”。  为了使OOXML文档格式成为国际标准,微软一直在努力寻求各界支持,包括积极争取各国政府合同,吸引开发界开发新的应用程序软件等。去年9月,ISO在首轮投票中拒绝了OOXML成为国际标准的请求,在104个成员国中,只有53%投了赞成票,未达到成为国际标准所需的2/

    2022年7月16日
    31
  • linux安装pycharm详细步骤[通俗易懂]

    linux安装pycharm详细步骤[通俗易懂]一、用xftp远程根据把解压后的安装包文件上传到指定目录/opt/module/。然后,cd/opt/pycharm-community-linux-2018.1.4/bin/,执行以下代码赋予pycharm.sh执行权限[atguigu@hadoop101bin]$chmodu+xpycharm.sh最后,执行$shpycharm.sh启动pycharm[atguigu@hadoop101bin]$pycharm.shStartupError:Unab…

    2022年8月25日
    11
  • Mac的pycharm中快捷键command+a不能全选「建议收藏」

    Mac的pycharm中快捷键command+a不能全选「建议收藏」问题:今天在pycharm中想使用快捷键全选结果:command+a的时候不是全选而是showusages原因:是因为安装了ideavim插件解决方法:卸载掉ideavim插件找到这个插件ideavim卸载uninstall卸载之后提示重启,重启就ok了。…

    2022年5月9日
    136
  • 调试coredump步骤(coredump原理)

    linux系统中某个进程突然崩溃终止,该从哪方面入手分析问题?

    2022年4月12日
    483
  • iframe跨域调用js_ajax跨域访问

    iframe跨域调用js_ajax跨域访问概述本地同一浏览器访问本地HTML文件和访问服务器端HTML文件,本地Iframe没有自适应高度,而服务器端的Ifrane自适应了高度。1.问题重现:Chrome版本41.0.2272.101(64-bit)OS:Win8.1Chrome访问服务器端HTML文件呈现的结果Chrome访问本地HTML文件呈现的结果本地访问的HTML文件Iframe没有根据Iframe里面的页面类容自适应高度2…

    2026年4月17日
    4
  • java如何输入字符串?「建议收藏」

    java如何输入字符串?「建议收藏」关于java如何输入字符串的文章早已是非常多了,本文是对我个人过往学习java,理解及应用java字符串的一个总结。此文内容涉及java如何输入字符串等相关问题,希望对大家有所帮助。java如何输入字符串?首先,导入java.util.*包。然后,你需要新建一个读取标准输入(键盘)的扫描器对象。现在,你可以从键盘输入字符串了。以上这一行把键盘输入的一行字符串读取到变量s中。请看一个完整的简单示例:以上就是java如何输入字符串的详细内容。我整理了一些ja

    2022年7月16日
    10

发表回复

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

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