md5是一种常见不可逆加密算法,使用简单,计算速度快,在很多场景下都会用到,比如:给用户上传的文件命名,数据库中保存的用户密码,下载文件后检验文件是否正确等。下面讲解在python中如何使用md5算法。

一、计算字符串的md5值

  1. #!/usr/bin/env python
  2. # -*- coding: utf- -*-
  3.  
  4. import sys
  5. import hashlib
  6.  
  7. reload(sys)
  8. sys.setdefaultencoding('utf-8')
  9.  
  10. if __name__ == '__main__':
  11. content = "hello"
  12. md5hash = hashlib.md5(content)
  13. md5 = md5hash.hexdigest()
  14. print(md5)

二、计算文件的md5值

  1. #!/usr/bin/env python
  2. # -*- coding: utf- -*-
  3.  
  4. import sys
  5. import hashlib
  6.  
  7. reload(sys)
  8. sys.setdefaultencoding('utf-8')
  9.  
  10. if __name__ == '__main__':
  11. file_name = "3383430480_51_01.jpg"
  12. with open(file_name, 'rb') as fp:
  13. data = fp.read()
  14. file_md5= hashlib.md5(data).hexdigest()
  15. print(file_md5) # ac3ee699961c58ef80a78c2434efe0d0

三、计算大文件的md5值

  1. #!/usr/bin/env python
  2. # -*- coding: utf- -*-
  3.  
  4. import sys
  5. import hashlib
  6.  
  7. def get_file_md5(fname):
  8. m = hashlib.md5() #创建md5对象
  9. with open(fname,'rb') as fobj:
  10. while True:
  11. data = fobj.read()
  12. if not data:
  13. break
  14. m.update(data) #更新md5对象
  15.  
  16. return m.hexdigest() #返回md5对象
  17.  
  18. reload(sys)
  19. sys.setdefaultencoding('utf-8')
  20.  
  21. if __name__ == '__main__':
  22. file_name = "mongodb_us.zip"
  23. file_md5 = get_file_md5(file_name)
  24. print(file_md5) # 0f45cdbf14de54001e82a17c3d199a4b

四、封装成常用库md5.py

  1. #!/usr/bin/env python
  2. # -*- coding: utf- -*-
  3.  
  4. import hashlib
  5.  
  6. def get_file_md5(file_name):
  7. """
  8. 计算文件的md5
  9. :param file_name:
  10. :return:
  11. """
  12. m = hashlib.md5() #创建md5对象
  13. with open(file_name,'rb') as fobj:
  14. while True:
  15. data = fobj.read()
  16. if not data:
  17. break
  18. m.update(data) #更新md5对象
  19.  
  20. return m.hexdigest() #返回md5对象
  21.  
  22. def get_str_md5(content):
  23. """
  24. 计算字符串md5
  25. :param content:
  26. :return:
  27. """
  28. m = hashlib.md5(content) #创建md5对象
  29. return m.hexdigest()

python 计算文件md5值的更多相关文章

  1. Python计算文件MD5值

    import hashlib def fileMD5(filename): m = hashlib.md5() #md5计算 #m = hashlib.sha1() #sha1计算 #m = hash ...

  2. Java计算文件MD5值(支持大文件)

    import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.securit ...

  3. 用Qt编写的计算文件MD5值的Demo

    Dialog.ui <?xml version="1.0" encoding="UTF-8"?> <ui version="4.0& ...

  4. Python校验文件MD5值

    import hashlib import os def GetFileMd5(filename): if not os.path.isfile(filename): return myHash = ...

  5. Java计算文件MD5值代码

    原文:http://www.open-open.com/code/view/1424930488031 import java.io.File; import java.io.FileInputStr ...

  6. java计算过G文件md5 值计算

    package io.bigdata; import java.io.File; import java.io.FileInputStream; import java.io.IOException; ...

  7. javascript 计算文件MD5 浏览器 javascript读取文件内容

    原则上说,浏览器是一个不安全的环境.早期浏览器的内容是静态的,用户上网冲浪,一般就是拉取网页查看.后来,随着互联网的发展,浏览器提供了非常丰富的用户交互功能.从早期的表单交互,到现在的websocke ...

  8. 基于js-spark-md5前端js类库,快速获取文件Md5值

    js-spark-md5是歪果仁开发的东西,有点多,但是我们只要一个js文件即可,具体类包我存在自己的oschina上,下载地址:https://git.oschina.net/jianqingwan ...

  9. MD5工具类,提供字符串MD5加密、文件MD5值获取(校验)功能

    MD5工具类,提供字符串MD5加密(校验).文件MD5值获取(校验)功能 : package com.yzu.utils; import java.io.File; import java.io.Fi ...

随机推荐

  1. 2018年5月15日的sqlite安装和数据库记录

    sqlite数据库安装在d:\sqlite_files运行sqlite3查看数据表,命令,.tables 数据库文件 d:\sqlite_files\device.db create table de ...

  2. ken桑带你读源码 之scrapy scrapy\extensions

    logstats.py 爬虫启动时 打印抓取网页数   item数 memdebug.py 爬虫结束 统计还被引用的内存 也就是说gc 回收不了的内存   memusage.py 监控爬虫 内存占用  ...

  3. PHP array_diff_ukey() 函数

    实例 比较两个数组的键名(使用用户自定义函数比较键名),并返回差集: <?phpfunction myfunction($a,$b){if ($a===$b){return 0;}return ...

  4. C/C++编程笔记:C++入门知识丨认识C++的函数和对象

    一. 本篇要学习的内容和知识结构概览 二. 知识点逐条分析 1. 混合型语言 C++源文件的文件扩展名为.cpp, 也就是c plus plus的简写, 在该文件里有且只能有一个名为main的主函数, ...

  5. CF R 639 div2 F Review 贪心 二分

    LINK:Résumé Review 这道题让我眼前一亮没想到二分这么绝. 由于每个\(b_i\)都是局部的 全局只有一个限制\(\sum_{i=1}^nb_i=k\) 所以dp没有什么用 我们只需要 ...

  6. c++ explict

    explicit 用于一个参数的构造函数:防止隐式转换. 什么意思呢? myClass(int x); 这是个构造函数 我们可以使用 myClass a(4);  或 myClass a=4;来调用它 ...

  7. JQuery插件,轻量级表单模型验证(续 一)

    之前的代码结构,不方便扩展多结构的模型验证 重新结构设计了一下验证模型核心 var validateForm = (function(model) { model.Key = "[data- ...

  8. 【BZOJ4173】数学 题解(数论)

    前言:体验到了推式子的快感orz 题目大意:求$\varphi(n)*\varphi(m)*\sum_{n\ mod\ k+m\ mod\ k\geq k} \varphi(k)\ mod\ 9982 ...

  9. nginx多个server的配置,同一端口

    nginx多个server的配置,同一端口 #user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/e ...

  10. java_内部类、匿名内部类的使用

    内部类 将一个类A定义在另一个类B里面,里面的那个类A就称为内部类,B则称为外部类. 内部类的分类 成员内部类,类定义在了成员位置 (类中方法外称为成员位置) 局部内部类,类定义在方法内 成员内部类 ...