python模块学习 hashlib

一、hashlib概述

涉及加密服务:14. Cryptographic Services

其中 hashlib是涉及安全散列和消息摘要,提供多个不同的加密算法借口,如SHA1、SHA224、SHA256、SHA384、SHA512、MD5等。

import hashlib
m = hashlib.md5()   #创建hash对象,md5:(message-Digest Algorithm 5)消息摘要算法,得出一个128位的密文
print m             #<md5 HASH object @ 000000000254ADF0>
m.update(‘BeginMan‘)#更新哈希对象以字符串参数
print m.digest()    #返回摘要,作为二进制数据字符串值
print m.hexdigest() #返回十六进制数字字符串    0b28251e684dfbd9102f8b6f0281c0c5
print m.digest_size #16
print m.block_size  #64

使用new()创建指定加密模式的hash对象

new(name, string=‘‘)
     """
     Return a new hashing object using the named algorithm;
     optionally initialized with a string.
     """
h = hashlib.new(‘md5‘)
print h     #<md5 HASH object @ 000000000260BDB0>
h2 = hashlib.new(‘ripemd160‘,‘what‘)
print h2    #<ripemd160 HASH object @ 000000000271B9F0>
h.update(‘beginman‘)
print h.hexdigest() #666fc5baa93a7fb207c5bfff03b67732
#等效
s = hashlib.md5()
s.update(‘beginman‘)
print s.hexdigest() #666fc5baa93a7fb207c5bfff03b67732

print h2.hexdigest()    #9c1185a5c5e9fc54612808977ee8f548b2258d31

三、常用属性

print hashlib.algorithms    #(‘md5‘, ‘sha1‘, ‘sha224‘, ‘sha256‘, ‘sha384‘, ‘sha512‘)    列出所有加密算法
print h.digest_size         #16 产生的散列的字节大小。
print h.block_size          #64 The internal block size of the hash algorithm in bytes.

四、常用方法

hash.update(arg)

更新哈希对象以字符串参数,如果同一个hash对象重复调用该方法,则m.update(a); m.update(b) is equivalent to m.update(a+b).

hash.digest()

返回摘要,作为二进制数据字符串值,

hash.hexdigest()

返回摘要,作为十六进制数据字符串值,

hash.copy()

复制

最近在测试文件拷贝测试,需要对文件拷贝后进行MD5值比较,看是不是拷贝完全。google和baidu上都是使用md5模块读取所有的文件进内存,在计算md5,导致计算超过1G大小的文件报错。timespace兄给出了增量计算MD5的方法,记录一下:

#!/usr/bin/env python
import hashlib
import sys 

def main():
    if len(sys.argv) != 2:
        sys.exit(‘Usage: %s file‘ % sys.argv[0])

    filename = sys.argv[1]
    m = hashlib.md5()
    with open(filename, ‘rb‘) as fp:
        while True:
            blk = fp.read(4096) # 4KB per block
            if not blk: break
            m.update(blk)

    print m.hexdigest(), filename

if __name__ == ‘__main__‘:
    main() 
时间: 2025-01-31 08:57:47

python模块学习 hashlib的相关文章

[转] python 模块学习 hashlib

转自: http://www.cnblogs.com/BeginMan/p/3328172.html 一.hashlib概述 涉及加密服务:14. Cryptographic Services 其中 hashlib是涉及安全散列和消息摘要,提供多个不同的加密算法借口,如SHA1.SHA224.SHA256.SHA384.SHA512.MD5等. 二.快速入门 import hashlib m = hashlib.md5() #创建hash对象,md5:(message-Digest Algori

python模块学习(2)——re模块

正则表达式并不是python的一部分,正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方法,但功能十分强大.得益于这一点,在提供了正则表达式的语言里,正则表达式的语法都是一样的,区别只在于不同的编程语言实现支持的语法数量不同:但不用担心,不被支持的语法通常是不常用的部分.如果已经在其他语言里使用过正则表达式,只需要简单看一看就可以上手了. 下图展示了使用正则表达式进行匹配的流程:  正则表达式的大致匹配过程是:依次拿出表达式和文本中的字符

python模块之hashlib: md5和sha算法

hashlib是个专门提供hash算法的库,现在里面包括md5, sha1, sha224, sha256, sha384, sha512,使用非常简单.方便.    md5经常用来做用户密码的存储.而sha1则经常用作数字签名.下面看看代码吧: #-*- encoding:gb2312 -*-import hashliba = "a test string"print hashlib.md5(a).hexdigest()print hashlib.sha1(a).hexdigest(

Python 模块学习

模块学习: http://wsyht90.blog.51cto.com/9014030/1845737 1.getpass 2.os 3.sys 4.subprocess 5.hashlib 6.json 7.pickle 8.shutil 9.time 10.datetime 11.re 12.random 13.configparser 14.traceback 15.yaml 16.itertools 17.logging 18.urllib.urllib2 19.paramiko ###

python模块学习第 0000 题

将你的 QQ 头像(或者微博头像)右上角加上红色的数字,类似于微信未读信息数量那种提示效果. 类似于图中效果: 好可爱>%<! 题目来源:https://github.com/Yixiaohan/show-me-the-code,感谢@史江歌以及其他人,让我找到了一个系统的学习python模块的好地方. 看到这个题目的第一印象是——额,难不成让我找qq的API,然后在手机APP的壁纸上提示QQ消息?好吧,我承认自己想复杂了,所以第二个想法就来了.因为博主最近学习比较杂乱无章,所以学习了tkin

python 模块之hashlib

Hashlib模块 Python里面的hashlib模块提供了很多加密的算法,这里介绍一下hashlib的简单使用事例,用hashlib的md5算法加密数据,其他的所有加密算法使用方式上基本类似. hashlib模块主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法 使用方法如下: #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2017/11/27 0027 16:09 # @Aut

Python模块学习

python模块-time python模块-datetime

Python模块学习之hashlib中MD5在接口测试中的应用

博主刚接到的接口需求使用了新的的安全机制,发送请求的时候要同步传递一个签名,签名内容由参数按照ascii排序后的值和一个动态的key值组装而成,使用MD5加密,在测试初期因为开发没有代码完成加密时很麻烦,后来使用python实现了这一块的自动加密 不多说,上代码 #! /usr/bin/python # coding:utf-8 """ @author:Bingo @file: test.py @time: 2017/11/09 """ impo

Python模块学习笔记— —hashlib

hashlib是涉及安全散列和消息摘要,提供多个不同的加密算法接口,如SHA1.SHA224.SHA256.SHA384.SHA512.MD5等. 常用属性 hashlib.algorithms 列出所有加密算法 h.digest_size 产生的散列字节大小. h.block_size 哈希内部块的大小 常用方法 hash.new([arg]) 创建指定加密模式的hash对象 hash.update(arg) 更新哈希对象以字符串参数.如果同一个hash对象重复调用该方法,m.update(a