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 hashing
As1:
注意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 版权协议,转载请附上原文出处链接和本声明。