Chương trình Python để tìm băm tệp

Trong bài viết này, bạn sẽ học cách tìm hàm băm của một tệp và hiển thị nó.

Để hiểu ví dụ này, bạn nên có kiến ​​thức về các chủ đề lập trình Python sau:

  • Các hàm Python
  • Các hàm do người dùng định nghĩa trong Python
  • I / O Tệp Python

Hàm băm lấy một lượng dữ liệu tùy ý và trả về một chuỗi bit có độ dài cố định. Đầu ra của hàm được gọi là thông báo tổng hợp.

Chúng được sử dụng rộng rãi trong mật mã cho mục đích xác thực. Có nhiều hàm băm như MD5, SHA-1, v.v. Tham khảo trang này để biết thêm về các hàm băm trong mật mã.

Trong ví dụ này, chúng tôi sẽ minh họa cách băm một tệp. Chúng tôi sẽ sử dụng thuật toán băm SHA-1. Bản tóm tắt của SHA-1 dài 160 bit.

Chúng tôi không cung cấp dữ liệu từ tệp cùng một lúc vì một số tệp rất lớn để vừa trong bộ nhớ cùng một lúc. Chia tệp thành nhiều phần nhỏ sẽ làm cho bộ nhớ xử lý hiệu quả.

Mã nguồn để tìm băm

 # Python rogram to find the SHA-1 message digest of a file # importing the hashlib module import hashlib def hash_file(filename): """"This function returns the SHA-1 hash of the file passed into it""" # make a hash object h = hashlib.sha1() # open file for reading in binary mode with open(filename,'rb') as file: # loop till the end of the file chunk = 0 while chunk != b'': # read only 1024 bytes at a time chunk = file.read(1024) h.update(chunk) # return the hex representation of digest return h.hexdigest() message = hash_file("track1.mp3") print(message) 

Đầu ra

 633d7356947eec543c50b76a1852f92427f4dca9 

Trong chương trình này, chúng tôi mở tệp ở chế độ nhị phân. Các chức năng băm có sẵn trong hashlibmô-đun. Chúng tôi lặp lại cho đến cuối tệp bằng cách sử dụng một whilevòng lặp. Khi đến cuối, chúng ta nhận được đối tượng byte trống.

Trong mỗi lần lặp, chúng tôi chỉ đọc 1024 byte (giá trị này có thể được thay đổi theo ý muốn của chúng tôi) từ tệp và cập nhật hàm băm.

Cuối cùng, chúng tôi trả về thông báo thông báo dưới dạng biểu diễn thập lục phân bằng cách sử dụng hexdigest()phương thức này.

thú vị bài viết...