Java Zip - Zip ফাইলের জন্য চেকসাম ভেরিফিকেশন প্রক্রিয়া একটি গুরুত্বপূর্ণ বিষয়, কারণ এটি নিশ্চিত করে যে কম্প্রেস করা ফাইলটির কোনো ধরনের ত্রুটি বা ডেটা ক্ষতি হয়নি। যখন একটি ZIP ফাইল তৈরি করা হয় এবং তা স্থানান্তর বা সংরক্ষণ করা হয়, তখন চেকসাম ব্যবহার করে ফাইলের অখণ্ডতা নিশ্চিত করা যায়।
চেকসাম ভেরিফিকেশন দ্বারা ZIP ফাইলের কন্টেন্টের অখণ্ডতা পরীক্ষা করা সম্ভব হয়। এর মাধ্যমে আমরা নিশ্চিত হতে পারি যে, ফাইলটি সম্পূর্ণভাবে এবং সঠিকভাবে আর্কাইভ হয়েছে এবং তার মধ্যে কোনো ধরনের পরিবর্তন বা ক্ষতি হয়নি।
Java Zip - Zip ফাইলের জন্য চেকসাম ভেরিফিকেশন
এখানে একটি উদাহরণ দেওয়া হলো যেখানে ZipInputStream ব্যবহার করে ZIP ফাইলের জন্য চেকসাম ভেরিফিকেশন করা হচ্ছে। আমরা MessageDigest (MD5 বা SHA-256) ব্যবহার করব ফাইলের চেকসাম তৈরি করতে এবং তারপর তা যাচাই করব।
Zip ফাইলের জন্য চেকসাম ভেরিফিকেশন উদাহরণ:
- ZIP ফাইল তৈরি এবং কম্প্রেস করা (ZipOutputStream ব্যবহার করে): প্রথমে একটি ZIP ফাইল তৈরি করব এবং সেটিতে একটি ফাইল কম্প্রেস করব।
- ZIP ফাইলের চেকসাম ভেরিফিকেশন: পরবর্তীতে, ZIP ফাইলটি ভেরিফাই করা হবে এবং তার চেকসাম যাচাই করা হবে।
1. ZIP ফাইল তৈরি এবং ফাইল কম্প্রেস করা (ZipOutputStream)
import java.io.*;
import java.util.zip.*;
public class CreateZipFile {
public static void main(String[] args) {
String zipFileName = "example.zip"; // ZIP ফাইলের নাম
String[] filesToZip = {"file1.txt"}; // ফাইলগুলি যেগুলো কম্প্রেস করতে হবে
try {
// FileOutputStream তৈরি করা
FileOutputStream fos = new FileOutputStream(zipFileName);
// ZipOutputStream ব্যবহার করা
ZipOutputStream zos = new ZipOutputStream(fos);
for (String fileName : filesToZip) {
File file = new File(fileName);
FileInputStream fis = new FileInputStream(file);
ZipEntry zipEntry = new ZipEntry(file.getName());
zos.putNextEntry(zipEntry);
byte[] buffer = new byte[1024];
int length;
while ((length = fis.read(buffer)) > 0) {
zos.write(buffer, 0, length);
}
zos.closeEntry();
fis.close();
}
zos.close();
fos.close();
System.out.println("ZIP file created successfully: " + zipFileName);
} catch (IOException e) {
e.printStackTrace();
}
}
}
এই কোডে একটি example.zip ফাইল তৈরি করা হবে এবং তাতে file1.txt ফাইলটি কম্প্রেস করা হবে।
2. ZIP ফাইলের চেকসাম ভেরিফিকেশন (MessageDigest ব্যবহার করে)
import java.io.*;
import java.security.*;
import java.util.zip.*;
public class VerifyZipChecksum {
public static void main(String[] args) {
String zipFileName = "example.zip"; // যাচাই করার জন্য ZIP ফাইলের নাম
String expectedChecksum = "d41d8cd98f00b204e9800998ecf8427e"; // এখানে একটি MD5 চেকসাম প্রদান করা হয়েছে
try {
// MessageDigest ইনস্ট্যান্স তৈরি করা (MD5 বা SHA-256)
MessageDigest md = MessageDigest.getInstance("MD5");
// FileInputStream ব্যবহার করে ZIP ফাইল পড়া
FileInputStream fis = new FileInputStream(zipFileName);
// BufferedInputStream ব্যবহার করা যাতে দ্রুত ডেটা পড়া যায়
BufferedInputStream bis = new BufferedInputStream(fis);
// ZipInputStream দিয়ে ZIP ফাইল খোলা
ZipInputStream zis = new ZipInputStream(bis);
ZipEntry zipEntry;
// ZIP ফাইলের প্রতিটি এন্ট্রি পড়া এবং তার চেকসাম হিসাব করা
while ((zipEntry = zis.getNextEntry()) != null) {
byte[] buffer = new byte[1024];
int length;
while ((length = zis.read(buffer)) > 0) {
md.update(buffer, 0, length); // চেকসাম আপডেট করা
}
zis.closeEntry();
}
// চেকসাম হিসাব করা
byte[] checksumBytes = md.digest();
StringBuilder sb = new StringBuilder();
for (byte b : checksumBytes) {
sb.append(String.format("%02x", b));
}
String calculatedChecksum = sb.toString();
// চেকসাম যাচাই করা
if (calculatedChecksum.equals(expectedChecksum)) {
System.out.println("Checksum is valid.");
} else {
System.out.println("Checksum is invalid.");
}
zis.close();
bis.close();
fis.close();
} catch (IOException | NoSuchAlgorithmException e) {
e.printStackTrace();
}
}
}
কোড ব্যাখ্যা:
- MessageDigest ব্যবহার:
- MessageDigest ক্লাস ব্যবহার করা হয় চেকসাম হিসাব করার জন্য। এখানে আমরা MD5 চেকসাম ব্যবহার করেছি, তবে আপনি চাইলে SHA-256 বা অন্য কোনো এলগরিদমও ব্যবহার করতে পারেন।
- ZipInputStream:
ZipInputStreamব্যবহার করে আমরা ZIP ফাইলটি পড়ে প্রতিটি এন্ট্রির জন্য চেকসাম আপডেট করি।
- BufferedInputStream:
BufferedInputStreamব্যবহার করা হয়েছে যাতে ফাইল ডেটা দ্রুত পড়া যায়। এটি ইনপুট ফাইল স্ট্রিমের মধ্যে একটি বাফার যোগ করে যা দ্রুত ডেটা পড়তে সহায়তা করে।
- চেকসাম যাচাই:
- শেষে, হিসাব করা চেকসামটি
expectedChecksumএর সাথে তুলনা করা হয়। যদি এটি ম্যাচ করে, তবে ফাইলের অখণ্ডতা সঠিক থাকে। অন্যথায়, এটি একটি ভুল চেকসাম সংকেত দেবে।
- শেষে, হিসাব করা চেকসামটি
ফলাফল:
- এই উদাহরণে, আপনি একটি ZIP ফাইলের চেকসাম যাচাই করতে পারবেন।
- যদি ফাইলের চেকসাম
expectedChecksumএর সাথে মেলে, তবে এটি নিশ্চিত করা হবে যে ZIP ফাইলটি সঠিকভাবে কম্প্রেস হয়েছে এবং তার মধ্যে কোনো পরিবর্তন হয়নি।
Java তে ZipInputStream এবং MessageDigest ব্যবহার করে ZIP ফাইলের চেকসাম ভেরিফিকেশন করা সম্ভব। এটি ফাইল ট্রান্সফার বা সংরক্ষণের পরে ফাইলের অখণ্ডতা নিশ্চিত করার জন্য খুবই গুরুত্বপূর্ণ।
Read more