CRC32 এবং Adler32 চেকসাম ইমপ্লিমেন্ট করা

CheckedInputStream এবং CheckedOutputStream - জাভা জিপ (Java Zip) - Java Technologies

220

CRC32 এবং Adler32 দুটি সাধারণ চেকসাম অ্যালগরিদম যা ডেটার অখণ্ডতা (data integrity) যাচাই করতে ব্যবহৃত হয়। চেকসাম একটি হ্যাশিং প্রক্রিয়া যা ডেটা পরিবর্তন হলে সেই পরিবর্তনটি সনাক্ত করতে সাহায্য করে। Java তে java.util.zip.CRC32 এবং java.util.zip.Adler32 ক্লাসগুলি ব্যবহার করে এই চেকসামগুলো হিসাব করা যায়।

1. CRC32 চেকসাম ইমপ্লিমেন্ট করা

CRC32 একটি সাইক্লিক রিডান্ডেন্ট চেকসাম অ্যালগরিদম যা সাধারণত ডেটা ট্রান্সমিশন এবং সংরক্ষণে ব্যবহৃত হয়। এটি ডেটার অখণ্ডতা যাচাই করতে এবং ট্রান্সমিশনের সময় ভুল ডেটা সনাক্ত করতে সাহায্য করে। CRC32 একটি 32-বিট চেকসাম প্রদান করে।

CRC32 উদাহরণ:

import java.util.zip.CRC32;

public class CRC32Example {
    public static void main(String[] args) {
        // ইনপুট ডেটা
        String data = "Hello, world!";

        // CRC32 চেকসাম হিসাব করার জন্য CRC32 অবজেক্ট তৈরি
        CRC32 crc32 = new CRC32();

        // ডেটা বাইটে কনভার্ট করা এবং CRC32 এ আপডেট করা
        crc32.update(data.getBytes());

        // চেকসাম প্রিন্ট করা
        long checksum = crc32.getValue();
        System.out.println("CRC32 Checksum: " + checksum);
    }
}

ব্যাখ্যা:

  1. CRC32 crc32 = new CRC32();: CRC32 চেকসাম হিসাব করার জন্য একটি CRC32 অবজেক্ট তৈরি করা হয়েছে।
  2. crc32.update(data.getBytes());: ইনপুট ডেটাকে বাইট অ্যারে তে কনভার্ট করে CRC32 অবজেক্টে আপডেট করা হয়েছে।
  3. long checksum = crc32.getValue();: getValue() মেথডের মাধ্যমে CRC32 চেকসাম পাওয়া যায়।
  4. Output: এটি 32-বিট চেকসাম মান আউটপুট হিসেবে প্রদর্শন করবে।

2. Adler32 চেকসাম ইমপ্লিমেন্ট করা

Adler32 একটি দ্রুততর চেকসাম অ্যালগরিদম যা সাধারণত ছোট ফাইলের জন্য ব্যবহার করা হয়। এটি CRC32 এর চেয়ে দ্রুত কিন্তু কম নিরাপদ। Adler32 একটি 32-বিট চেকসাম প্রদান করে এবং এটি দুটি অংশে বিভক্ত: একটি 16-বিট অংশ এবং একটি 16-বিট অংশ।

Adler32 উদাহরণ:

import java.util.zip.Adler32;

public class Adler32Example {
    public static void main(String[] args) {
        // ইনপুট ডেটা
        String data = "Hello, world!";

        // Adler32 চেকসাম হিসাব করার জন্য Adler32 অবজেক্ট তৈরি
        Adler32 adler32 = new Adler32();

        // ডেটা বাইটে কনভার্ট করা এবং Adler32 এ আপডেট করা
        adler32.update(data.getBytes());

        // চেকসাম প্রিন্ট করা
        long checksum = adler32.getValue();
        System.out.println("Adler32 Checksum: " + checksum);
    }
}

ব্যাখ্যা:

  1. Adler32 adler32 = new Adler32();: Adler32 চেকসাম হিসাব করার জন্য একটি Adler32 অবজেক্ট তৈরি করা হয়েছে।
  2. adler32.update(data.getBytes());: ইনপুট ডেটাকে বাইট অ্যারে তে কনভার্ট করে Adler32 অবজেক্টে আপডেট করা হয়েছে।
  3. long checksum = adler32.getValue();: getValue() মেথডের মাধ্যমে Adler32 চেকসাম পাওয়া যায়।
  4. Output: এটি Adler32 চেকসাম মান আউটপুট হিসেবে প্রদর্শন করবে।

CRC32 এবং Adler32 এর মধ্যে পার্থক্য:

  • অ্যালগরিদম: CRC32 একটি সাইক্লিক রিডান্ডেন্ট চেকসাম (CRC) অ্যালগরিদম ব্যবহার করে, যেখানে Adler32 একটি দুটি অংশে বিভক্ত চেকসাম অ্যালগরিদম।
  • দ্রুততা: Adler32 সাধারণত ছোট ফাইলের জন্য দ্রুততর চেকসাম প্রদান করে।
  • নিরাপত্তা: CRC32 Adler32 থেকে নিরাপদ, কারণ এটি দীর্ঘ এবং আরও জটিল অ্যালগরিদম ব্যবহার করে।
  • ব্যবহার: CRC32 সাধারণত আরও গুরুত্বপূর্ণ অ্যাপ্লিকেশন যেমন নেটওয়ার্ক ট্রান্সমিশন বা আর্কাইভিং ব্যবহৃত হয়, যেখানে Adler32 সাধারণত কম্প্রেসন অ্যালগরিদম এবং ফাইল চেকিংয়ের জন্য ব্যবহৃত হয়।

Java তে CRC32 এবং Adler32 চেকসাম হিসাব করা সহজ এবং কার্যকরী। আপনি যেকোনো ডেটার অখণ্ডতা যাচাই করতে এই চেকসাম অ্যালগরিদমগুলি ব্যবহার করতে পারেন। CRC32 সাধারণত নিরাপদ এবং বৃহৎ ডেটার জন্য ব্যবহৃত হয়, যেখানে Adler32 দ্রুত কিন্তু কম নিরাপদ, সাধারণত ছোট ডেটা বা ফাইলের জন্য ব্যবহার করা হয়।

Content added By
Promotion

Are you sure to start over?

Loading...