【Python】hashlib库的介绍及用法

以上就是hashlib库的主要方法。

以下是一些使用Python hashlib库的示例:

  1. 使用md5散列:
import hashlib

m = hashlib.md5()
m.update(b"Hello, world!")
print(m.hexdigest())
  1. 使用sha256散列:
import hashlib

s = hashlib.sha256()
s.update(b"Hello, world!")
print(s.hexdigest())
  1. 使用update方法进行多次更新:
import hashlib

m = hashlib.md5()
m.update(b"Hello, ")
m.update(b"world!")
print(m.hexdigest())
  1. 使用digest方法获取字节表示:
import hashlib

m = hashlib.md5()
m.update(b"Hello, world!")
print(m.digest())
  1. 使用copy方法复制hash对象:
import hashlib

m = hashlib.md5()
m.update(b"Hello, ")
n = m.copy()
m.update(b"world!")
n.update(b"AI!")
print("m: ", m.hexdigest())
print("n: ", n.hexdigest())

以上就是一些使用Python hashlib库的示例。

在Python的hashlib库中,m.update(b"hello")是用来更新hash对象m的散列值的。

这里的b"hello"是一个字节字符串。在Python中,字符串前面的b表示该字符串是字节类型的。字节字符串在很多处理二进制数据和与C语言库交互的场景中是必需的。

update方法接收一个字节字符串参数,并用它来更新hash对象的当前散列值。这个方法可以被多次调用以连续更新散列值。

例如:

import hashlib

m = hashlib.md5()  # 创建一个md5 hash对象
m.update(b"Hello, ")  # 更新散列值
m.update(b"world!")  # 再次更新散列值
print(m.hexdigest())  # 打印最终的散列值

在这个例子中,m.update(b"Hello, ")m.update(b"world!")连续更新了m的散列值,最后的散列值是基于整个输入字符串"Hello, world!"计算的。

m.update(b"hello")方法在hashlib库中是用于更新散列值的,而不是覆盖。当你多次调用update方法时,它会将每次传入的数据视为连续的输入流,并基于所有输入数据计算散列值。

例如:

import hashlib

m = hashlib.md5()
m.update(b"Hello, ")
m.update(b"world!")
print(m.hexdigest())

在这个例子中,m.update(b"Hello, ")m.update(b"world!")连续更新了m的散列值,最后的散列值是基于整个输入字符串"Hello, world!"计算的,而不仅仅是最后一次调用update方法时的输入"world!"。所以,update方法是在原有的基础上进行更新,而不是覆盖。

m.update(data.encode(encoding=‘utf-8’))

m.update(data.encode(encoding='utf-8')) 是 Python 中用于更新哈希对象的一种方法。这行代码的功能是将字符串 data 编码为 UTF-8 格式后,用这个编码后的数据更新哈希对象 m

具体来说,update() 方法是哈希对象(例如 hashlib 中的 md5 或者 sha1 对象)的一个方法,用于向哈希对象添加新的数据。当所有数据都被添加后,可以使用 digest()hexdigest() 方法来获取哈希值。

encode(encoding='utf-8') 是将 data 字符串转化为字节串(bytes)的方法,其中 ‘utf-8’ 是一种常用的字符编码方式。在哈希计算中,通常要求输入的数据为字节串,所以需要先进行编码转化。

所以整个表达式的含义是:将 data 字符串转化为 UTF-8 编码的字节串,然后用这个字节串更新 m 哈希对象的哈希值。

UTF-8 编码是一种变长的编码方式,用于将 Unicode 字符串转换为字节流。在 UTF-8 编码中,每个字符可以由 1 到 4 个字节表示。ASCII 字符(0-127)只需要一个字节,拉丁文和其他常见字符可能需要两个字节,而更复杂的字符(例如许多东亚字符)可能需要三到四个字节。这种编码方式的优势在于它的兼容性,因为它可以处理各种字符集,并且与 ASCII 编码兼容。

Unicode(统一码、万国码)是一种计算机编码标准,其设计目标是用来处理世界上所有的字符,使得计算机可以用更为简单的方式来呈现和使用各种语言。

Unicode 是一个字符集,它用唯一的数字表示每一个字符,无论这个字符在什么平台、设备、应用或者语言中。这个数字被称为 Unicode 码点或者 Unicode 编码点,例如,英文的字母 A 的 Unicode 码点是 U+0041。

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注:Python)

,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!**

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注:Python)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值