کدنویس۲۱

کدنویس۲۱

با کد نویس 21 کد نویس باشید.
کدنویس۲۱

کدنویس۲۱

با کد نویس 21 کد نویس باشید.

هش فایل در پایتون

سلام دوستان در این مطلب می خواهیم به موضوع هش(Hash) فایل بپردازیم و ببینیم که چطور می توان با کمک یک کتابخانه پایتون یک فایل را هش کرد.

 

 

پیش از اینکه به سراغ هش کردن فایل با پایتون برویم بیایید ببینیم که اصلا هش فایل چه کاربردی دارد؟

یکی از کاربرد های هش یک فایل این است که بفهمیم آیا فایل مخدوش شده یا تغییری کرده است یا خیر. ممکن است در طی فرایند های جابجایی مشکلی پیش آمده و فایل مخدوش شده باشد یا برای مثال کسی کد مخرب به آن تزریق کرده باشد.

برای مثال وقتی شما فایلی را از یک سایت دانلود کنید و سایت هش مربوط به آن فایل را برای شما گذاشته باشد شما می توانید هش را چک کرده و از سالم بودن آن اطمینان حاصل کنید یا ممکن است به جای آنکه فایل را دانلود کنید، آن را از یکی از دوستانتان بگیرید وبرای اینکه مطمئن بشوید که دوست شما فایل را دستکاری نکرده:) یا نسخه متفاوتی به شما نمی دهد هش آن فایل را با هش درون سایت مقایسه کنید.

معمولاً به منظور انجام این کار از MD5 و SHA1 و SHA256 استفاده می کنند.

خب فکر کنم همین توضیحات کافی باشه، پس بریم سراغ هش کردن فایل با پایتون!

ما می خواهیم از کتابخانه hashlib برای این کار استفاده کنیم پس در ابتدا باید آن را ایمپورت کنیم:

import hashlib

پس از ایمپورت کردن کتابخانه، سراغ استفاده از آن می رویم:

m= hashlib.md5()

بعد از نمونه سازی باید فایل را وارد کنیم؛ من ترجیح می دهم مسیر فایل را با اینپوت دریافت کنم:

path = input("File Path: ")

with open(path, 'rb') as f:

file = f.read()

m.update(file)

همانطور که در چهار خط بالا مشاهده می کنید، من ابتدا مسیر فایل را با input درخواست و متن وارد شده را در متغیر path کردم؛ سپس بایت های فایل را با کمک دستور open خوانده(از حالت rb برای خواندن بایت ها استفاده می کنیم) و به عنوان f ذخیره می کنیم. در خط بعد می بینید که محتویات f را با تابع read می خوانیم و در متغیر file می ریزیم و به قسمت اصلی کار که دادن اطلاعات به m هست می رسیم که این کار را هم با update انجام می دهیم.

حال نوبت دریافت هش و چاپ کردن آن روی صفحه می شود که نحوه انجام آن را در زیر می بینید:

print("MD5 Hash: " + MD5.hexdigest())

همانطور که دیدید هش را با کمک hexdigest دریافت می کنیم.

اگر به انواع دیگر هش نیز علاقه مندید، پیشنهاد می کنم به کد زیر هم نگاهی بیاندازید:

# Python3

# CodeWriter21

# Mehrad Pooryoussof

import hashlib

path = input("File Path: ")

MD5 = hashlib.md5()

SHA256 = hashlib.sha256()

SHA1 = hashlib.sha1()

SHA224 = hashlib.sha224()

SHA384 = hashlib.sha384()

SHA512 = hashlib.sha512()

BLAKE2B = hashlib.blake2b()

BLAKE2S = hashlib.blake2s()

SHA3_224 = hashlib.sha3_224()

SHA3_256 = hashlib.sha3_256()

SHA3_384 = hashlib.sha3_384()

SHA3_512 = hashlib.sha3_512()

SHAKE_128 = hashlib.shake_128()

SHAKE_256 = hashlib.shake_256()

with open(path, 'rb') as f:

file = f.read()

MD5.update(file)

SHA256.update(file)

SHA1.update(file)

SHA224.update(file)

SHA384.update(file)

SHA512.update(file)

BLAKE2B.update(file)

BLAKE2S.update(file)

SHA3_224.update(file)

SHA3_256.update(file)

SHA3_384.update(file)

SHA3_512.update(file)

SHAKE_128.update(file)

SHAKE_256.update(file)

print("MD5: " + MD5.hexdigest())

print("SHA256: " + SHA256.hexdigest())

print("SHA1: " + SHA1.hexdigest())

print("SHA224: " + SHA224.hexdigest())

print("SHA384: " + SHA384.hexdigest())

print("SHA512: " + SHA512.hexdigest())

print("BLAKE2B: " + BLAKE2B.hexdigest())

print("BLAKE2S: " + BLAKE2S.hexdigest())

print("SHA3_224: " + SHA3_224.hexdigest())

print("SHA3_256: " + SHA3_256.hexdigest())

print("SHA3_384: " + SHA3_384.hexdigest())

print("SHA3_512: " + SHA3_512.hexdigest())


print("\n CodeWriter21 \n")

تا پستی دیگر

نظرات 0 + ارسال نظر
برای نمایش آواتار خود در این وبلاگ در سایت Gravatar.com ثبت نام کنید. (راهنما)
ایمیل شما بعد از ثبت نمایش داده نخواهد شد