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 #
print m.block_size #
使用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()
python模块学习 hashlib的更多相关文章
- [转] python 模块学习 hashlib
转自: http://www.cnblogs.com/BeginMan/p/3328172.html 一.hashlib概述 涉及加密服务:14. Cryptographic Services 其中 ...
- 【转】Python模块学习 - fnmatch & glob
[转]Python模块学习 - fnmatch & glob 介绍 fnmatch 和 glob 模块都是用来做字符串匹配文件名的标准库. fnmatch模块 大部分情况下使用字符串匹配查找特 ...
- 【目录】Python模块学习系列
目录:Python模块学习笔记 1.Python模块学习 - Paramiko - 主机管理 2.Python模块学习 - Fileinput - 读取文件 3.Python模块学习 - Confi ...
- Python模块学习filecmp文件比较
Python模块学习filecmp文件比较 filecmp模块用于比较文件及文件夹的内容,它是一个轻量级的工具,使用非常简单.python标准库还提供了difflib模块用于比较文件的内容.关于dif ...
- python模块学习心得
初始模块 1.什么是模块 模块是用来实现某项功能的一大堆代码,为什么会有模块呢?过程式编程的时候为了减少程序员编程代码的重复性,就利用函数的调用减少了代码的重复性,但是某些时候程序会过于的庞大,我们会 ...
- python 模块之-hashlib
python 模块hashlib import hashlib m=hashlib.md5() # 生成MD5加密对象 m.update('jiami-string'.encode(' ...
- python 模块之hashlib
Hashlib模块 Python里面的hashlib模块提供了很多加密的算法,这里介绍一下hashlib的简单使用事例,用hashlib的md5算法加密数据,其他的所有加密算法使用方式上基本类似. h ...
- python模块学习第 0000 题
将你的 QQ 头像(或者微博头像)右上角加上红色的数字,类似于微信未读信息数量那种提示效果. 类似于图中效果: 好可爱>%<! 题目来源:https://github.com/Yixiao ...
- Python模块学习:logging 日志记录
原文出处: DarkBull 许多应用程序中都会有日志模块,用于记录系统在运行过程中的一些关键信息,以便于对系统的运行状况进行跟踪.在.NET平台中,有非常著名的第三方开源日志组件log4net ...
随机推荐
- html自定义checkbox、radio、select —— select篇
上一篇<html自定义checkbox.radio.select —— checkbox.radio篇>介绍了我们是怎么将 html 自带的 checkbox.radio 改成我们自定义的 ...
- C语言字节对齐 __align(),__attribute((aligned (n))),#pragma pack(n)
转载地址 : http://blog.csdn.net/21aspnet/article/details/6729724 一.概念 对齐跟数据在内存中的位置有关.如果一个变量的内存地址正好位于它 ...
- nginx定时备份access访问日志并重启nginx
用.sh脚本写了备份日志脚本 其实就是转移文件改名后重新建一个空文件 mv /alidata/log/nginx/access/wxtest.log /alidata/log/nginx/access ...
- 解决SDK下载时速度过慢的问题
1.打开android sdk manager 2.打开tool->options,如图所示 3.将Proxy Settings 里的HTTP Proxy Server和HTTP Proxy P ...
- Spring Aop实现方式总结
前面两个文章介绍了Aop及其相关重要概念,下面主要用代码的方式介绍下实现Spring Aop的几种方式 1. 基于注解实现Spring Aop 业务类接口 package cn.test.busine ...
- 通过GWT RPC实现客户端与服务器端的交互
GWT有两种与服务端进行交互的技术:GWT RPC和基于普通AJAX的远程交互技术.这里只介绍GWT RPC技术. 一个完整的RPC服务至少包含三个Java文件: 1.客户端远程接口类,需要继承Rem ...
- saveFileDialog
saveFileDialog1.ShowDialog saveFileDialog.FileName 设置的时候是一个字符串. 如: 新建 RTF 文档.rtf 获得的时候 则为一个完整的路径. 如: ...
- Android开发_字符串处理类-TextUtils类
对于字符串处理Android为我们提供了一个简单实用的TextUtils类,如果处理比较简单的内容不用去思考正则表达式不妨试试这个在android.text.TextUtils的类,主要的功能如下: ...
- VS2012执行Cocos2d-xTest案例载入失败解决方式
编译cocos2d-x,一直提示载入失败 通过搜索,解决方式例如以下: 第一步,通过命令提示行工具进入VS安装文件夹下的%VS2012home%Common7\IDE 第二部,运行devenv.exe ...
- hadoop错误java.io.IOException Failed to replace a bad datanode on the existing pipeline due to no more good datanodes being available to try
错误: java.io.IOException: Failed to replace a bad datanode on the existing pipeline due to no more go ...