"""
@File : MyJiaMi.py
@Modify Time @Author @Version
------------ ------- --------
@Desciption:
"""
import hashlib
"""
hash.update(arg)
更新hash对象。连续的调用该方法相当于连续的追加更新。例如m.update(a); m.update(b)相当于m.update(a+b)。注意,当数据规模较大的时候,Python的GIL在此时会解锁,用于提高计算速度。
一定要理解update()的作用,由于消息摘要是只针对当前状态产生的,所以每一次update后,再次计算hexdigest()的值都会不一样。
hash.digest()
返回bytes格式的消息摘要
hash.hexdigest()
与digest方法类似,不过返回的是两倍长度的字符串对象,所有的字符都是十六进制的数字。通常用于邮件传输或非二进制环境中。通常我们比较摘要时,比较的就是这个值!
hash.copy()
返回一个hash对象的拷贝
decode的作用是将其他编码的字符串转换成unicode编码,如str1.decode('gb2312'),表示将gb2312编码的字符串转换成unicode编码。
encode的作用是将unicode编码转换成其他编码的字符串,如str2.encode('gb2312'),表示将unicode编码的字符串转换成gb2312编码。
如果你想知道什么是unicode
为了解决传统的字符编码方案的局限,产生了unicode。它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。
"""
class JiaMi():
@staticmethod
def md5(string: str) -> str:
# 1、创造hashlib工厂
md = hashlib.md5()
# 2、运送原材料,工厂传入的原材料都是bytes类型
md.update(string.encode(encoding='utf-8'))
# 3、产出hash值
md5 = md.hexdigest()
print(type(md.hexdigest()))
return md5
@staticmethod
def sha1(string: str) -> str:
sha = hashlib.sha1()
sha.update(string.encode(encoding='utf-8'))
sha1 = sha.hexdigest()
print(type(sha.hexdigest()))
return sha1
print(JiaMi.md5('12121212'))
print(JiaMi.sha1('12121212'))
结果
<class 'str'>
8ce87b8ec346ff4c80635f667d1592ae
<class 'str'>
cc4723995ce819915e734147a77850427a9e95f9