注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

江志祥的博客

可恶的中国银行,信用卡像病毒啊,取消那么难,,,

 
 
 

日志

 
 

使用Python的MD5模块比较两个文件是否一致  

2012-04-16 14:58:21|  分类: 计算机-Python |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
在Python中内置了md5的实现,就是md5模块,因此可以很简单的处理比较两个文件是否一致的问题。如以下代码片断:

import os,sys,md5
 
f1 = open('f:/1.txt','r')
f2 = open('f:/1.txt','r')
print md5.new(f1.read()).digest() == md5.new(f2.read()).digest()

以上处理在处理比较大的文件(比如几百M的文件)的时候会有内存问题。

python的md5模块使用非常简单,包括以下几个函数:

  • md5.new([arg])
    • 返回一个md5对象,如果给出参数,则相当于调用了update(arg)
  • md5.updte(arg)
    • 用string参数arg更新md5对象
  • md5.digest()
    • 返回16字节的摘要,由传给update的string生成,摘要没有ascii字符
  • md5.hexdigest()
    • 以16进制的形式返回摘要

代码示例:

在python中使用md5也是很简单的,首先也是要引入MD5模块,如下面的例子:

>>> import md5

加密一个字符

>>> a = md5.md5("a") >>> a.hexdigest() '0cc175b9c0f1b6a831c399e269772661'

加密一个Email

>>> a = md5.new("abc@163.com") >>> a.hexdigest() '89e6be31ee05110fa23cdc369fd4cab3'

加密一个文件

#!/usr/bin/env python # coding:utf-8  import sys,md5  def getMD5(strFile):     try:         fh = open(strFile, "rb")         m = md5.md5()         strRead = ""          while True:             strRead = fh.read(8096)             if not strRead:                 break             m.update(strRead)         bet = True         strMd5 = m.hexdigest()     except:         bet = False     finally:         if fh:             fh.close()      return [bet, strMd5]  if __name__ == "__main__":     strPath = raw_input("Input a File path:")     print(getMD5(strPath))
  评论这张
 
阅读(561)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018