hashlib库里update函数的奇妙之处

文章介绍了如何在Python中使用SHA-256算法生成哈希值,展示了`update`函数如何拼接字符串并计算新的摘要,而非覆盖原有数据。
Python3.9

Python3.9

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

特别感谢张老师的《Python编程及网络安全实践》,感觉知识点满满

前提知识:

摘要值:哈希值或散列值,可以理解为加密后的值

直接上波代码

import hashlib

str1 = input("str1:")
str1 = str1.encode("UTF-8") # 在使用sha256等计算hex值时要先编码
sha256_1 = hashlib.sha256(str1)
print("十六进制的哈希摘要值为",sha256_1.hexdigest()) #要使用hexdigest()函数来获得哈希摘要的十六进制表示,否则会返回哈希对象而不是一个字符串或可打印的值 

str2 = input("str2:")
str2 = str2.encode("UTF-8")
sha256_2 = hashlib.sha256(str2)
print("十六进制的哈希摘要值为",sha256_2.hexdigest())

str3 = input("str3:")
str3 = str3.encode("UTF-8")
str4 = input("str4:")
str4 = str4.encode("UTF-8")

sha256_34 = hashlib.sha256() #创建一个 SHA-256 的哈希对象 sha256_34

sha256_34.update(str3)
sha256_34.update(str4)

print("十六进制的哈希摘要值为",sha256_34.hexdigest())

 输出的结果为

 可以看到

因为sha256_34的值是helloworld的摘要值

936a185caaa266bb9cbe981e9e05cb78cd732b0b3280eb944412bb6f8f8f07af

而不是world的摘要值

486ea46224d1bb4fb680f34f7c9ad96a8f24ec88be73ea8e5a6c65260e9cb8a7

可以得出

update函数是对输入的字符串进行拼接然后再计算摘要值,而不是覆盖原来的数据再计算摘要值

您可能感兴趣的与本文相关的镜像

Python3.9

Python3.9

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

DB2数据库提供了丰富的内置函数,用于支持各种数据处理和查询操作。这些函数可以根据功能进行分类,并广泛应用于SQL语句中,以实现更复杂的数据操作。 ### 3.1 数值函数 数值函数主要用于对数字类型的数据进行运算。常见的数值函数包括 `ABS()`(取绝对值)、`CEIL()`(向上取整)、`FLOOR()`(向下取整)、`ROUND()`(四舍五入)等。例如: ```sql SELECT ROUND(123.456, 2) FROM SYSIBM.SYSDUMMY1; ``` 此查询将返回 `123.46`,表示对数值进行了保留两位小数的四舍五入运算 [^1]。 ### 3.2 字符串函数 字符串函数用于处理字符型数据,如 `UPPER()`(转换为大写)、`LOWER()`(转换为小写)、`SUBSTR()`(截取子字符串)等。例如: ```sql SELECT UPPER('hello world') FROM SYSIBM.SYSDUMMY1; ``` 该语句将返回 `'HELLO WORLD'`,表示将输入字符串全部转换为大写 [^1]。 ### 3.3 日期和时间函数 日期和时间函数用于处理日期与时间类型的数据,如 `CURRENT DATE`(获取当前日期)、`CURRENT TIME`(获取当前时间)、`TIMESTAMPDIFF()`(计算两个时间戳之间的差异)等。例如: ```sql SELECT CURRENT DATE FROM SYSIBM.SYSDUMMY1; ``` 此语句将返回当前系统日期 [^1]。 ### 3.4 聚合函数 聚合函数用于对一组数据进行统计分析,常见的有 `SUM()`(求和)、`AVG()`(求平均值)、`COUNT()`(计数)、`MAX()`(取最大值)、`MIN()`(取最小值)等。例如: ```sql SELECT COUNT(*) FROM employees; ``` 该语句将返回表 `employees` 中所有记录的数量 [^1]。 ### 3.5 类型转换函数 类型转换函数用于在不同的数据类型之间进行转换,如 `CAST()`、`VARCHAR()`、`DECIMAL()` 等。例如: ```sql SELECT CAST('123' AS INTEGER) FROM SYSIBM.SYSDUMMY1; ``` 该语句将字符串 `'123'` 转换为整数类型 [^1]。 ###
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hhhalloWelt

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值