特别感谢张老师的《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函数是对输入的字符串进行拼接然后再计算摘要值,而不是覆盖原来的数据再计算摘要值