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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 十六、状态模式—用类表示状态 #和设计模式一起旅行#

    人有悲欢离合,月有阴晴圆缺!故事背景白天、黑夜是不同的状态,水蒸气、冰是水不同的状态,大千的世界,不同的各种东西会有很多种状态,本篇要介绍的就是 “用类来表示状态”,用类表示状态后,我们就可以切换类来方便地改变对象的状态。故事主角状态模式:允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类。在状态模式结构中包括几个角色: – Conte…

    2022年2月27日
    36
  • 前端页面图片加载失败显示默认图片

    前端页面图片加载失败显示默认图片方法有多种:1.首先说我用的,看代码//页面图片加载失败时默认显示统一处理document.addEventListener("error",function(e){  varelem=e.target;  if(elem.tagName.toLowerCase()=="img"){    elem.src="/image/General/errorDef…

    2022年6月2日
    36
  • php工厂模式

    php工厂模式定义:我们只需要提供一个创建对象实例的功能,而无需关心其具体实现,被创建实例的类型可以是接口、抽象类,也可以是具体的类。一、简单工厂模式(平时开发中基本上简单工厂模式就够用了)说明: Api:定义客户所需要的功能接口(后面具体实现的类基本上就根据这个来) Impl:具体实现Api的实现类,一般有多个, Factory:工厂,选择合适的实现类来创建Api接…

    2022年7月25日
    13
  • C/C++中随机函数rand()和srand()的用法「建议收藏」

    C/C++中随机函数rand()和srand()的用法「建议收藏」一、rand()函数名:rand功能:随机数发生器用法:intrand(void);所在头文件:stdlib.h函数说明:rand()的内部实现是用线性同余法做的,它不是真的随机数,因其周期特别长,故在一定的范围里可看成是随机的。

    2022年4月29日
    41
  • CriticalSection_alternative question是什么意思

    CriticalSection_alternative question是什么意思线程锁,即在多线程中可以控制线程的执行顺序,防止使用中全局变量在两个线程中同时使用,变量发生改变的错误。示例:https://blog.csdn.net/ninedays/article/details/5381123线程锁的概念函数EnterCriticalSection和LeaveCriticalSection的用法注:使用结构CRITICAL_SECTION需加入头文件#in…

    2022年9月20日
    3
  • pycharm下载插件_SiteD 插件中心

    pycharm下载插件_SiteD 插件中心我使用的PyCharm软件的版本:2016.1.4参考网站:https://www.jetbrains.com/help/pycharm/2016.1/installing-updating-and-uninstalling-repository-plugins.html给PyCharm软件添加plugins的图文操作(这里以添加Markdown插件)Step1.启动PyC

    2022年8月26日
    3

发表回复

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

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