5.1 hashlib.py

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的摘要

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Silverlight是由微软开发的一种基于浏览器的应用程序框架。Silverlight 5.1.50918.0是Silverlight的一个特定版本号。每个版本都会带来新的功能和修复现有版本的问题。 Silverlight 5.1.50918.0在2013年9月18日发布,这个版本包含一些重要的新功能和改进。 首先,Silverlight 5.1.50918.0引入了一种称为“平面文本元素”(Text improvements)的新功能,这使得文本在Silverlight应用程序中呈现和处理更加高效和高质量。此外,它还提供了XAML文本渲染服务,使开发者能够更好地控制元素的呈现和渲染。 其次,Silverlight 5.1.50918.0还增加了对3D图形和图像处理的支持。它引入了硬件加速的3D图形效果,使开发者能够创建更加逼真和吸引人的用户界面。它还增加了对图像的变形和混合效果的支持,使得开发者能够更灵活地处理和操作图像。 此外,Silverlight 5.1.50918.0还改进了性能和稳定性。它对垃圾回收算法进行了优化,改进了内存管理,从而提升了应用程序的性能和响应能力。它还修复了一些已知的问题和错误,增强了应用程序的稳定性。 总而言之,Silverlight 5.1.50918.0是Silverlight的一个特定版本,它带来了一些新功能和改进,包括平面文本元素、3D图形和图像处理支持,以及性能和稳定性的改进。如果您已安装了Silverlight,建议更新到这个版本以获得更好的体验和功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值