5.1 hashlib.py
#!/usr/bin/python
# -*- encoding: utf-8
import hashlib
if __name__ == "__main__":
md5 = hashlib.md5()
md5.update('This is a sentence.'.encode(encoding='utf-8'))
md5.update('This is a second sentence.'.encode())
print (u'不出意外,这个将是“乱码”:', md5.digest())
print (u'MD5:', md5.hexdigest())
md5 = hashlib.md5()
md5.update('This is a sentence.This is a second sentence.')
print (u'MD5:', md5.hexdigest())
print (md5.digest_size, md5.block_size)
print ('------------------')
sha1 = hashlib.sha1()
sha1.update('This is a sentence.')
sha1.update('This is a second sentence.')
print (u'不出意外,这个将是“乱码”:', sha1.digest())
print (u'SHA1:', sha1.hexdigest())
sha1 = hashlib.sha1()
sha1.update('This is a sentence.This is a second sentence.')
print (u'SHA1:', sha1.hexdigest())
print (sha1.digest_size, sha1.block_size)
print ('=====================')
md5 = hashlib.new('md5', 'This is a sentence.This is a second sentence.')
print (md5.hexdigest())
sha1 = hashlib.new('sha1', 'This is a sentence.This is a second sentence.')
print (sha1.hexdigest())
print (hashlib.algorithms)Q1:
md5.update('This is a sentence.')
TypeError: Unicode-objects must be encoded before hashingAs1:
注意update()必须指定要加密的字符串的字符编码
解决办法:
md5.update('This is a sentence.'.encode(encoding='utf-8'))
md5.update('This is a second sentence.'.encode())相关知识
str.encode()
def encode(self, encoding: str = 'utf-8', errors: str = 'strict') Inferred type: (self: str, encoding: str, errors: str) -> bytes参数:encoding = 'utf-8' 表示以utf-8编码,即将str对象以你选定的编码方式进行编码,errors= 默认为strict,即会抛出编码异常的错误UnicodeEncodeError,可用ignore忽略
md5.update()
sha1.update()
hashlib.new()都需要指定要加密的字符串的字符编码
hashlib 是一个集成hash加密或者md5加密以及sha1(), sha224(), sha256(), sha384(), sha512(), blake2b(), and blake2s(). md5()的库
主要功能是将字符串进行加密,或者对信息进行摘要。
MD5主要对于任意长度的信息,经过MD5 算法都能得到一段长度为128bit的摘要
版权声明:本文为huji6617原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。