파일의 MD5 값을 python으로 계산합니다.

3373 단어 pythonMD5
md5는 흔히 볼 수 있는 불가역 암호화 알고리즘으로 사용이 간단하고 계산 속도가 빠르며 많은 장면에서 사용된다. 예를 들어 사용자에게 업로드된 파일 이름, 데이터베이스에 저장된 사용자 비밀번호, 파일을 다운로드한 후 파일이 정확한지 검사하는 등이다.다음은python에서md5 알고리즘을 어떻게 사용하는지 설명합니다.

1. 문자열의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)
상기 코드 실행, 출력: 5d41402abc4b2a76b9719d911017c592
PHP 자체의md5 함수로 같은 문자열을 계산하여hello의md5가 정확한지 확인합니다.

<?php

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

2. 계산 파일의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 계산은 문자열 계산과 같습니다.hashlib의md5 방법을 직접 사용하고 hexdigests를 사용하면 됩니다.PHP 코드로 동일하게 확인

<?php

  $file_name = "3383430480_51_01.jpg";
  $file_md5 = md5_file($file_name);
  var_dump($file_md5);  //   ac3ee699961c58ef80a78c2434efe0d0
결과에서 알 수 있듯이md5는 같고 파일md5값도 그렇습니다. 마음속으로 기뻐합니다...
만약에 큰 파일, 예를 들어 몇 개의 G가 있다면, 상술한 코드는 틀림없이 메모리가 넘칠 것이다. 어떻게 하면 블록별로 파일 내용을 읽고 계산할 수 있다.

3. 큰 파일의md5값을 계산한다


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

import sys
import hashlib

def get_file_md5(fname):
  m = hashlib.md5()  # md5 
  with open(fname,'rb') as fobj:
    while True:
      data = fobj.read(4096)
      if not data:
        break
      m.update(data) # md5 

  return m.hexdigest()  # md5 

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

4. 상용 라이브러리md5로 봉함.py


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

import hashlib

def get_file_md5(file_name):
  """
   md5
  :param file_name:
  :return:
  """
  m = hashlib.md5()  # md5 
  with open(file_name,'rb') as fobj:
    while True:
      data = fobj.read(4096)
      if not data:
        break
      m.update(data) # md5 

  return m.hexdigest()  # md5 


def get_str_md5(content):
  """
   md5
  :param content:
  :return:
  """
  m = hashlib.md5(content) # md5 
  return m.hexdigest()
자, MD5에 대한 계산은 여기까지 하겠습니다. 서로 다른 견해를 가진 학생, 벽돌을 두드리는 것을 환영합니다. 함께 토론해 주십시오. 감사합니다.
이상은python으로 파일의 MD5 값을 계산하는 상세한 내용입니다. 더 많은python 계산 파일의 MD5에 대한 자료는 저희 다른 관련 글을 주목해 주십시오!

좋은 웹페이지 즐겨찾기