码迷,mamicode.com
首页 > 编程语言 > 详细

Python Hashlib笔记

时间:2017-04-28 12:03:15      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:his   sha-1   nts   无法   --   microsoft   exce   mic   ade   

#python3.4
hashlib module - A common interface to many hash functions.
hash.digest() - Return the digest of the data passed to the update() method so far. This is a bytes object of size digest_size which may contain bytes in the whole range from 0 to 255.
hash.hexdigest() - Like digest() except the digest is returned as a string object of double length, containing only hexadecimal digits. This may be used to exchange the value safely in email or other non-binary environments.


注1:python 3 由于默认是 Unicode 因此 update(arg) 中的 arg如果是字符串时,需要用b开头,例如 b"hello world!!"。
注2:MD5为例,及校验和为128bit数据,对应16Byte 数据。但这个16Byte无法用ASCII直接表示(存储、通信等)。
因此 使用 hexdigest 将 128bit分为 32个4bit数据,4bit数据用hex(0~9,A~F)的ASCII表示。这样对很多通信协议就好用了,也风方便 人来阅读及比较。

MD5 -- 128bit,SHA-1 -- 160bit, SHA-256 -- 256bit, SHA-512 -- 512bit

举例:
>>>import hashlib
>>>hashlib.md5(b"hello").digest()
b‘]A@*\xbcK*v\xb9q\x9d\x91\x10\x17\xc5\x92‘
>>>hashlib.md5(b"hello").hexdigest()
‘5d41402abc4b2a76b9719d911017c592‘

1、将 hexdigest拆分如下:
5d 41 40 2a bc 4b 2a 76 b9 71 9d 91 10 17 c5 92

2、每2为hex转换为 hex( 其中 大于0x80的无法转换,0x0~0x7F中有些也需要转移。可得
b ‘ ] A @ * \xbc K * v \xb9 q \x9d \x91 \x10 \x17 \xc5 \x92。 和 digest( 就对起来了)。

Python Hashlib笔记

标签:his   sha-1   nts   无法   --   microsoft   exce   mic   ade   

原文地址:http://www.cnblogs.com/yvivid/p/6780843.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!