Python实战小程序——计算文件的md5值
2016-11-08 21:21
405 查看
实战要求:利用python计算文件MD5值(从前台上传一个文件,后台计算MD5值后,返给前端)
注意题目要求:从前台上传一个文件,后台计算MD5值后,返给前端,这就需要我们再引入一个os模块实现输入功能。
首先介绍一下md5值是什么,MD5的全称是Message-Digest Algorithm 5.在90年代初由MIT的计算机科学实验室和RSA Data Security Inc发明.经MD2.MD3和MD4发展而来.
Message-Digest泛指字节串(Message)的Hash变换.就是把一个任意长度的字节串变换成一定长的大整数.请注意我使用了[字节串"而不是[字符串"这个词.是因为这种变换只与字节的值有关.与字符集或编码方式无关. MD5将任意长度的[字节串"变换成一个128bit的大整数.并且它是一个不可逆的字符串变换算法.换句话说就是.即使你看到源程序和算法描述.也无法将一个MD5的值变换回原始的字符串MD5还广泛用于加密和解密技术上.
在很多操作系统中.用户的密码是以MD5值(或类似的其它算法)的方式保存的. 用户Login的时候.系统是把用户输入的密码计算成MD5值.然后再去和系统中保存的MD5值进行比较.而系统并不[知道"用户的密码是什么.MD5在论坛上.软件发布时经常用.是为了保证文件的正确性.防止一些人盗用程序.
为了计算文件的md5值我们引入Python的hashlib模块
#coding=utf-8 import hashlib import os #Python os模块包含普遍的操作系统功能。如果你希望你的程序能够与平台无关的话,这个模块是尤为重要的。 _FILE_SLIM=100*1024*1024 def File_md5(filename): calltimes = 0 #分片的个数 hmd5 = hashlib.md5() fp = open(filename, "rb") f_size = os.stat(filename).st_size #得到文件的大小 if f_size > _FILE_SLIM: while (f_size > _FILE_SLIM): hmd5.update(fp.read(_FILE_SLIM)) f_size /= _FILE_SLIM calltimes += 1 # delete #文件大于100M时进行分片处理 if (f_size > 0) and (f_size <= _FILE_SLIM): hmd5.update(fp.read()) else: hmd5.update(fp.read()) return (hmd5.hexdigest(), calltimes) filepath = raw_input('请输入文件路径: ') print File_md5(filepath)
在计算文件的md5值时,遇到大文件(假设大于100M)时,不能简单的一次载入内存,需要对文件分片不断的update完成(需要分片)
Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等。
什么是摘要算法呢?摘要算法又称哈希算法、散列算法。它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符串表示)。
分片的简单例子:
import hashlib</span>
md5 = hashlib.md5()
md5.update('how to use md5 in python hashlib?')
print md5.hexdigest()
分片:
md5 = hashlib.md5()
md5.update('how to use md5 in ')
md5.update('python hashlib?')
print md5.hexdigest()
md5的使用:
mymd5=hashlib.md5() #产生一个新的md5类型对象mymd5 mymd5.update() #用传入参数改变mymd5对象,返回传如参数的md5值
如果m.update(a)之后在 m.update(b),那么就相当于m.update(a+b)
md5.hexhashlib() #返回一个十六进制的32位md5值
input()函数支持用户输入数字或者表达式,不支持输入字符串.返回的是数字类型的数值.
raw_input()函数捕获的是用户的原始输入,返回为字符串.
相关文章推荐
- Python -- 计算文件的md5值
- 用Python计算文件的MD5值
- Python:遍历一个目录下所有的文件及文件夹,然后计算每个文件的字符和line的小程序
- python计算文件的MD5值
- python计算文件md5值
- Python计算文件MD5值
- python选取文件夹,然后计算该文件夹下所有文件的md5值,并列出md5值相同的文件到log中
- Python读取某个目录下的zip压缩包解压开后计算每个小文件的md5值,并将压缩包名字、里面小文件名字、以及对应的md5值写入csv文件
- Python : 计算大文件MD5值
- python 计算文件的md5值实例
- Python : 计算大文件MD5值
- python学习,计算文件MD5值
- Python简单计算文件MD5值的方法示例
- python 计算文件的md5值实例
- 大文件计算MD5值 ——Python
- python计算文件的md5值
- 使用python cgi上传文件并计算md5值
- Python计算一个目录下的所有文件的md5值,在Linux系统下面
- 利用python计算windows全盘文件md5值的脚本
- 用python计算文件的md5值