Mavzu: Fayl nazorat summasidan (Cheksum) foydalanib, takroriy ma'lumotlarni olib tashlash


II BOB. Har bir faylni nazorat summasini qayta hisoblash va fayilarning mosligini tekshirish


Download 0.8 Mb.
bet4/6
Sana16.06.2023
Hajmi0.8 Mb.
#1493312
1   2   3   4   5   6
Bog'liq
Fayl nazorat summasidan (Cheksum) foydalanib, takroriy ma\'lumotlarni olib tashlash

II BOB. Har bir faylni nazorat summasini qayta hisoblash va fayilarning mosligini tekshirish.
2.1. Har bir faylni nazorat summasini qayta hisoblash.
Fayl nazorat summasi, fayl yoki hujjatning unikal tahriridir. Hash algoritmlari yordamida hisoblanadi. Fayllarning nazorat summasi, fayl yoki hujjat o'zgarishsiz saqlanishini ta'minlaydi. Faylning nazorat summasi, faylni o'zgartirmaganingizni va faylni qayta yuklamaganingizni tek
Hashning turiga qarab, faylning nazorat summasi uzunligi va formati o'zgaradi. Masalan, SHA-256 nazorat summasi MD5 dan ko'proq uzun va xavfsiz hisoblanadi.
Hashning avvalgi qiymatlarini bilgan holda, siz yuklangan faylni keyingi bir ish jarayonida tekshirish uchun nazorat summasini hisoblashingiz mumkin. Fayllarning nazorat summasi, shaxsiy fayllarni ochib ko'rish, yoki fayllar to'plamini o'rnatish, yoki boshqa maqsadlarda foydalanish uchun ham ishlatiladi.
Python dasturlash tilida, hashlib kutubxonasi orqali fayllarning nazorat summasini hisoblash mumkin.
Agar fayllarning nazorat summasini hisoblash kerak bo'lsa, Python dasturlash tilidan foydalanish mumkin. Bu uchun hashlib kutubxonasi ishlatiladi. hashlib kutubxonasi, ba'zi hash algoritmlarini qo'llab-quvvatlaydi, misol uchun MD5, SHA-1, SHA-256 va hokazo. Hash algoritmlari, fayl yoki matn kabi ma'lumotlarni hujjatning biror qismi, ya'ni hash summasiga aylantiradi.
Quyidagi kodda, faylning MD5 nazorat summasi hisoblanadi:

import hashlib


filename = 'example.txt'
hash_md5 = hashlib.md5()
with open(filename, 'rb') as f:
for chunk in iter(lambda: f.read(4096), b""):
hash_md5.update(chunk)
print(f"The MD5 hash of {filename} is: {hash_md5.hexdigest()}")

Bu kodda, example.txt nomli fayl ochiladi va fayl chunk'lari (har biri 4096 bayt) yordamida o'qiladi. Hashning ishlatilayotgan algoritmi MD5 va hashlib.md5() yordamida yaratiladi. hash_md5.update(chunk) yordamida har bir chunk hash summasiga qo'shiladi. Keyin hash_md5.hexdigest() yordamida hash summasi hisoblangan va natija konsolga chiqariladi.


Hashning turiga qarab, faylning nazorat summasi uzunligi va formati o'zgaradi. Masalan, SHA-256 nazorat summasi MD5 dan ko'proq uzun va xavfsiz hisoblanadi.
Hashning avvalgi qiymatlarini bilgan holda, yuklab olingan faylni keyingi bir ish jarayonida tekshirish uchun nazorat summasini hisoblash mumkin. Bunda keyingi ish jarayoni, yuklab olingan faylni qayta yuklash va birinchi nazorat summasini yangi nazorat summasi bilan solishtirishdan iborat bo'ladi.
Misol uchun, faylni yuklab olishdan keyin, faylning nazorat summasini hisoblaymiz:

import hashlib


filename = "file.txt"
hash_before = hashlib.sha256()
with open(filename, "rb") as f:
for chunk in iter(lambda: f.read(4096), b""):
hash_before.update(chunk)
print("Hash before: ", hash_before.hexdigest())

Yuqoridagi kodda, faylni binar ko'rinishida ochib olamiz va hash_before o'zgaruvchisiga sha256 hash algoritmi yordamida faylning nazorat summasini hisoblaymiz. update() metodi orqali faylning qismi-qismi o'qilishi uchun iter() yordamidan foydalanilgan. Keyingi qadamda, faylni o'zgartirishdan keyin nazorat summasini qayta hisoblaymiz va yangi nazorat summasi bilan birinchi nazorat summasini solishtirish uchun quyidagi kodni ishlatamiz:


hash_after = hashlib.sha256()


with open(filename, "rb") as f:
for chunk in iter(lambda: f.read(4096), b""):
hash_after.update(chunk)
if hash_before.hexdigest() == hash_after.hexdigest():
print("File has not been modified.")
else:
print("File has been modified!")

Bu misol kodda, faylni o'zgartirishdan keyin, faylning nazorat summasi qayta hisoblangan va yangi nazorat summasi bilan birinchi nazorat summasi solishtirildi. Agar birinchi va ikkinchi nazorat summalari bir xil bo'lsa, fayl o'zgartirilmagan bo'ladi. Aks holda, fayl o'zgartirilgan hisoblanadi.




Download 0.8 Mb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling