首页 > 编程语言 >Python学习笔记-常用模块介绍--hashlib哈希函数

Python学习笔记-常用模块介绍--hashlib哈希函数

时间:2023-01-20 09:22:06浏览次数:39  
标签:文件 hashlib utf Python update 哈希 encode

1.hash算法是什么?

  • 传入的值一样,结果一样。
  • 一种哈希算法算出来的结果,长度固定。
  • 不能反解。

2.(扩展知识)文件下载完成后,进度显示100%,为什么不能立马打开?

  • 下载完成后,会进行文件的哈希校验。
  • 用哈希校验来判断,这个文件传输过程中有没有损坏。

3.示例1:

import hashlib

m = hashlib.md5()
m.update("你好".encode("utf-8"))  # 只接受bite类型
m.update("123".encode("utf-8"))

print(m.hexdigest())    # 36473306e94d8d0f8dc4af5d4d9e17cc

n = hashlib.md5()
n.update("你好".encode("utf-8"))  # 只接受bite类型
n.update("12".encode("utf-8"))
n.update("3".encode("utf-8"))

print(n.hexdigest())    # 36473306e94d8d0f8dc4af5d4d9e17cc

 

4.如何计算文件哈希值?

# 如何计算文件的哈希值?
m = hashlib.md5()
with open(r"./哈希计算.zip",mode="rb") as f:
    m.update(f.read())
    print(m.hexdigest())    # 76cdb2bad9582d23c1f6f4d868218d6c

5.计算文件哈希值,文件很大怎么办?

# 如何计算文件的哈希值?
m = hashlib.md5()
with open(r"./哈希计算.zip",mode="rb") as f:
    # m.update(f.read())
    for line in f:          # 防止文件过大,占用内存过大
        m.update(line)
    print(m.hexdigest())    # 76cdb2bad9582d23c1f6f4d868218d6c

 

6.计算文件的哈希值,会真的for循环遍历所有吗?

  • 当文件很大的时候,比如10G,for循环必定是很慢的。
  • 所以,实际中,为了提升速度,我们会采取,抽样采集。
  • 比如,10%的位置采集10个字符,20%的位置采集10个字符...
  • 这种,不能保证100%的完整性,不过也达到了99.99%的正确率,这是可以接受的。
  • 相比起,速度太慢,损失客户,和0.01%错误率,后者损失较小。

7.密码加密。

  • m = hashlib.md5()
    password = "liqi1234"
    
    m.update(password.encode("utf-8"))
    print(m.hexdigest())

     

8.密码如何更安全?

  • 加大破解难度

  • 例如,加盐

 

参考资料:

https://www.cnblogs.com/linhaifeng/articles/6384466.html#_label10

 

标签:文件,hashlib,utf,Python,update,哈希,encode
From: https://www.cnblogs.com/liqi175/p/17047581.html

相关文章

  • day7--哈希表--四数相加
     1.四数相加lettcode454我的想法使用暴力解法,我写出来啦~很开心,但是会超时,时间复杂度太高了,这里应该是O(n^4),然后看下优化的哈希写法classSolution{public:int......
  • Python入门之变量
    """变量:在内存中存储数据"""#语法:#变量名称=对象#例如:name="张无忌"print(name)#语义:内存图#变量名:真实内存地址的别名#见名知意#......
  • Python爬虫之58租房+高德地图
    任务分析用Python爬虫在58同城网上爬取房源信息,保存为本地CSV文件申请高德开发者Key,用JSAPI示例编写Index.html,在web上设置工作地点,导入CSV房源信息文件,显示工作地点及......
  • Python-构建自适应线性神经元
    Python-构建自适应线性神经元1自适应线性神经元自适应性神经元(Adaline)可以视为感知器的优化和改进。该算法说明了定义最小化连续性代价函数的关键概念。这为理解如逻辑......
  • 将Python文件.py打包成.exe可执行程序
    点我~原创-最优教程.exe是文件扩展名,带有.exe扩展名的文件名按下Enter键就可运行。这么个意思不就是:不需要装python即可运行python程序了,岂不美哉(_)v这里说一下,本文只......
  • python pandas dataframe读取超大数据集
    前言最近在搞一个根因分析相关的项目,内部用到一个原因模拟器,自动生成各种问题可能导致的告警现象,算是大数据的边缘,一提到大数据,数据量就大了,项目大概需要模拟3000+个根源......
  • Python3.9+torch1.7.1+cuda11.0+cudnn8.0+Anaconda3安装
    前言想要安装pytorch,至少得先安装Anaconda、python!!!必要的不想用cpu要用gpu的还需要cuda11.0+cudnn11.0!!!一、安装python3.9二、安装Anaconda3三、安装cuda11.0+cudnn8.0四、......
  • python 工匠规范
    最近看了《python工匠》这本关于python的书,虽然只看了第一章关于变量与注释的内容,也有些突如其来的想法。一直学习如何使用python去做一些功能,忽略了它本身的一些特性和......
  • python __getitem__用法
    classA():def__init__(self):self.name={"key":"aaa"}def__getitem__(self,item):returnself.name.get(item)obj=A()print(obj["key"])......
  • python编码
    str类型字符串  byte类型字符串1、两者互相转换通过 str类型通过encode转换成bytes类型bytes类型通过decode转换成str类型2、两者以一种编码方式进行......