最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

用python計(jì)算文件的MD5值

 更新時(shí)間:2020年12月23日 16:29:00   作者:笑得開心  
這篇文章主要介紹了用python計(jì)算文件的MD5值的方法,幫助大家更好的理解和使用python,感興趣的朋友可以了解下

  md5是一種常見不可逆加密算法,使用簡(jiǎn)單,計(jì)算速度快,在很多場(chǎng)景下都會(huì)用到,比如:給用戶上傳的文件命名,數(shù)據(jù)庫中保存的用戶密碼,下載文件后檢驗(yàn)文件是否正確等。下面講解在python中如何使用md5算法。

一、計(jì)算字符串的md5值

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import sys
import hashlib

reload(sys)
sys.setdefaultencoding('utf-8')

if __name__ == '__main__':
  content = "hello"
  md5hash = hashlib.md5(content)
  md5 = md5hash.hexdigest()
  print(md5)

 運(yùn)行上述代碼,輸出:5d41402abc4b2a76b9719d911017c592

用PHP自帶的md5函數(shù)計(jì)算同一個(gè)字符串,驗(yàn)證下hello的md5是否正確。

<?php

  $content = "hello";
  $md5 = md5($content);
  var_dump($md5);  // 輸出 5d41402abc4b2a76b9719d911017c592

二、計(jì)算文件的md5值

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import sys
import hashlib

reload(sys)
sys.setdefaultencoding('utf-8')

if __name__ == '__main__':
  file_name = "3383430480_51_01.jpg"
  with open(file_name, 'rb') as fp:
    data = fp.read()
  file_md5= hashlib.md5(data).hexdigest()
  print(file_md5)   # ac3ee699961c58ef80a78c2434efe0d0

文件md5計(jì)算跟字符串計(jì)算是一樣,直接使用hashlib的md5方法,然后hexdigests就好了。同樣用PHP代碼驗(yàn)證下

<?php

  $file_name = "3383430480_51_01.jpg";
  $file_md5 = md5_file($file_name);
  var_dump($file_md5);  // 輸出 ac3ee699961c58ef80a78c2434efe0d0

從結(jié)果可以看出md5是一樣的,文件md5值也不過如此呀,心里竊喜。。。

如果大文件呢,比如幾個(gè)G呢,上述代碼肯定會(huì)內(nèi)存溢出,怎么辦呢,可以分塊讀取文件內(nèi)容并計(jì)算。

三、計(jì)算大文件的md5值

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import sys
import hashlib

def get_file_md5(fname):
  m = hashlib.md5()  #創(chuàng)建md5對(duì)象
  with open(fname,'rb') as fobj:
    while True:
      data = fobj.read(4096)
      if not data:
        break
      m.update(data) #更新md5對(duì)象

  return m.hexdigest()  #返回md5對(duì)象

reload(sys)
sys.setdefaultencoding('utf-8')

if __name__ == '__main__':
  file_name = "mongodb_us.zip"
  file_md5 = get_file_md5(file_name)
  print(file_md5)   # 0f45cdbf14de54001e82a17c3d199a4b

四、封裝成常用庫md5.py

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import hashlib

def get_file_md5(file_name):
  """
  計(jì)算文件的md5
  :param file_name:
  :return:
  """
  m = hashlib.md5()  #創(chuàng)建md5對(duì)象
  with open(file_name,'rb') as fobj:
    while True:
      data = fobj.read(4096)
      if not data:
        break
      m.update(data) #更新md5對(duì)象

  return m.hexdigest()  #返回md5對(duì)象


def get_str_md5(content):
  """
  計(jì)算字符串md5
  :param content:
  :return:
  """
  m = hashlib.md5(content) #創(chuàng)建md5對(duì)象
  return m.hexdigest()

好了,關(guān)于md5的計(jì)算就到這里,有不同見解的同學(xué),歡迎拍磚,一起來探討,謝謝。

以上就是用python計(jì)算文件的MD5值的詳細(xì)內(nèi)容,更多關(guān)于python 計(jì)算文件MD5的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python正則表達(dá)式高級(jí)使用方法匯總

    Python正則表達(dá)式高級(jí)使用方法匯總

    這篇文章主要介紹了Python正則表達(dá)式高級(jí)使用方法解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • 淺談Python3中打開文件的方式(With open)

    淺談Python3中打開文件的方式(With open)

    本文主要介紹了淺談Python3中打開文件的方式(With open),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • python 中的@property的用法詳解

    python 中的@property的用法詳解

    這篇文章主要介紹了python @property的用法,簡(jiǎn)單地說就是一個(gè)類里面的方法一旦被@property裝飾,就可以像調(diào)用屬性一樣地去調(diào)用這個(gè)方法,它能夠簡(jiǎn)化調(diào)用者獲取數(shù)據(jù)的流程,感興趣的朋友跟隨小編一起看看吧
    2022-06-06
  • django 中的聚合函數(shù),分組函數(shù),F(xiàn) 查詢,Q查詢

    django 中的聚合函數(shù),分組函數(shù),F(xiàn) 查詢,Q查詢

    這篇文章主要介紹了django 中的聚合函數(shù),分組函數(shù),F(xiàn) 查詢,Q查詢,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • python并發(fā)和異步編程實(shí)例

    python并發(fā)和異步編程實(shí)例

    這篇文章主要為大家詳細(xì)介紹了python并發(fā)和異步編程實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • python?ConfigParser庫的使用及遇到的坑

    python?ConfigParser庫的使用及遇到的坑

    這篇文章主要介紹了python?ConfigParser庫的使用及遇到的坑,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • Python shutil模塊文件和目錄操作示例詳解

    Python shutil模塊文件和目錄操作示例詳解

    本文將會(huì)學(xué)習(xí)到?shutil?模塊,包括其主要功能和示例代碼,以幫助你更好地理解如何使用它來處理文件和目錄
    2023-11-11
  • Python基于tkinter模塊實(shí)現(xiàn)的改名小工具示例

    Python基于tkinter模塊實(shí)現(xiàn)的改名小工具示例

    這篇文章主要介紹了Python基于tkinter模塊實(shí)現(xiàn)的改名小工具,結(jié)合實(shí)例形式分析了tkinter模塊操作文件后綴名的相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2017-07-07
  • Python 在函數(shù)上添加包裝器

    Python 在函數(shù)上添加包裝器

    這篇文章主要介紹了Python 如何在函數(shù)上添加包裝器,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • Python基本數(shù)據(jù)結(jié)構(gòu)之字典類型dict用法分析

    Python基本數(shù)據(jù)結(jié)構(gòu)之字典類型dict用法分析

    這篇文章主要介紹了Python基本數(shù)據(jù)結(jié)構(gòu)之字典類型dict用法,結(jié)合實(shí)例形式分析了Python字典類型dict概念、原理、定義及基本使用技巧,需要的朋友可以參考下
    2019-06-06

最新評(píng)論

彰武县| 黄陵县| 贺州市| 郯城县| 武城县| 苗栗市| 庆城县| 堆龙德庆县| 界首市| 巴马| 图片| 柞水县| 宜川县| 安多县| 长沙市| 扶绥县| 江陵县| 东莞市| 普兰店市| 东莞市| 蒙城县| 武安市| 北流市| 五大连池市| 泰来县| 桑日县| 左权县| 郓城县| 若羌县| 金乡县| 周至县| 棋牌| 宜黄县| 贵州省| 青龙| 沽源县| 桂东县| 胶州市| 庆云县| 武陟县| 孝昌县|