Digital Signatures এবং Document Authentication

Java Technologies - অ্যাপাচি পিওআই (ওয়ার্ড) Security এবং Password Protection |
189
189

Apache POI লাইব্রেরি মূলত Microsoft Office ডকুমেন্টগুলোর সাথে কাজ করার জন্য ব্যবহৃত হয়। তবে, Digital Signatures এবং Document Authentication এর মতো নিরাপত্তা বিষয়ক কাজের জন্য Apache POI সরাসরি সমর্থন প্রদান করে না। কিন্তু কিছু external লাইব্রেরি ব্যবহার করে Apache POI এর সাথে digital signature যুক্ত করা এবং ডকুমেন্টের authentication করা সম্ভব।

Digital Signatures এর প্রয়োজনীয়তা

Digital Signatures মূলত ডকুমেন্টের সার্বিক নিরাপত্তা নিশ্চিত করতে ব্যবহৃত হয়। এটি একটি এনক্রিপ্টেড কোড যা প্রমাণ করে যে ডকুমেন্টটি একটি নির্দিষ্ট ব্যক্তি দ্বারা সই করা হয়েছে এবং ডকুমেন্টটি অপরিবর্তিত রয়েছে।

ডিজিটাল সই সাধারণত Public Key Infrastructure (PKI) এর মাধ্যমে তৈরি করা হয়, যেখানে দুটি কী ব্যবহৃত হয়:

  • Private Key: সই করার জন্য ব্যবহৃত হয়।
  • Public Key: সই যাচাই করার জন্য ব্যবহৃত হয়।

ডকুমেন্টে সই করার পরে, এটি প্রমাণ করে যে ডকুমেন্টটি কোনো একটি নির্দিষ্ট ব্যক্তির তৈরি এবং তাতে কোনো পরিবর্তন করা হয়নি।


১. Apache POI দিয়ে Digital Signature যোগ করা

Apache POI লাইব্রেরি সরাসরি Digital Signature যোগ করার কাজ করে না। তবে, আপনি BouncyCastle বা Apache Santuario এর মতো বাইরের লাইব্রেরি ব্যবহার করে ডিজিটাল সিগনেচার তৈরি এবং যাচাই করতে পারেন।

Digital Signature তৈরির জন্য BouncyCastle ব্যবহার করার উদাহরণ:

BouncyCastle হল একটি ওপেন সোর্স লাইব্রেরি যা cryptographic operations এর জন্য সমর্থন প্রদান করে, যেমন digital signatures তৈরি করা। এটি Java এর মাধ্যমে সহজে ব্যবহার করা যেতে পারে।

BouncyCastle দিয়ে Digital Signature যোগ করার উদাহরণ:
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.util.IOUtils;
import org.bouncycastle.jce.provider.BouncyCastleProvider;

import java.io.*;
import java.security.*;
import java.security.cert.X509Certificate;
import java.util.Arrays;

public class DigitalSignatureExample {
    public static void main(String[] args) {
        try {
            // BouncyCastle Provider এড করা
            Security.addProvider(new BouncyCastleProvider());

            // একটি KeyPair তৈরি করা (Private এবং Public Key)
            KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
            keyPairGenerator.initialize(2048);
            KeyPair keyPair = keyPairGenerator.generateKeyPair();

            // ডকুমেন্ট তৈরি
            XWPFDocument document = new XWPFDocument();
            FileOutputStream fos = new FileOutputStream("DigitalSignedDocument.docx");
            document.write(fos);
            fos.close();

            // ডিজিটাল সিগনেচার তৈরি করা
            byte[] docBytes = IOUtils.toByteArray(new FileInputStream("DigitalSignedDocument.docx"));
            Signature signature = Signature.getInstance("SHA256withRSA");
            signature.initSign(keyPair.getPrivate());
            signature.update(docBytes);

            byte[] digitalSignature = signature.sign();

            // সিগনেচার সংরক্ষণ
            FileOutputStream signatureFile = new FileOutputStream("DocumentSignature.sig");
            signatureFile.write(digitalSignature);
            signatureFile.close();

            System.out.println("Digital Signature added successfully!");

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

কোডের ব্যাখ্যা:

  • KeyPairGenerator: ডিজিটাল সিগনেচার তৈরি করতে একটি Private Key এবং Public Key পেয়ার জেনারেট করে।
  • Signature: সিগনেচার অবজেক্ট যা ডকুমেন্টের উপর একটি ডিজিটাল সই তৈরি করে।
  • SHA256withRSA: সিগনেচার তৈরির জন্য এনক্রিপশন অ্যালগরিদম ব্যবহার করা হয়।

এটি শুধু সিগনেচার তৈরির একটি উদাহরণ। সিগনেচার যাচাই করার জন্য আপনাকে Public Key ব্যবহার করতে হবে।


২. Document Authentication (ডকুমেন্ট প্রমাণীকরণ)

ডকুমেন্টের প্রমাণীকরণ নিশ্চিত করার জন্য Digital Signatures অত্যন্ত গুরুত্বপূর্ণ ভূমিকা পালন করে। যখন একটি ডকুমেন্টে ডিজিটাল সিগনেচার যোগ করা হয়, তখন তা নিশ্চিত করে যে:

  • ডকুমেন্টটি পরিবর্তন করা হয়নি।
  • এটি সঠিক ব্যক্তির দ্বারা সই করা হয়েছে।

ডকুমেন্টের সঠিকতা যাচাই করতে, আপনি পাবলিক কী ব্যবহার করে ডিজিটাল সিগনেচার যাচাই করতে পারেন।

Digital Signature যাচাই করার উদাহরণ:

import java.io.*;
import java.security.*;
import java.security.cert.X509Certificate;
import java.util.Arrays;

public class VerifyDigitalSignature {
    public static void main(String[] args) {
        try {
            // Public Key লোড করা (যেটি signer থেকে পাওয়া যাবে)
            FileInputStream fis = new FileInputStream("public_key.pem");
            byte[] publicKeyBytes = fis.readAllBytes();
            PublicKey publicKey = KeyFactory.getInstance("RSA").generatePublic(new X509EncodedKeySpec(publicKeyBytes));

            // সিগনেচার লোড করা
            FileInputStream sigFis = new FileInputStream("DocumentSignature.sig");
            byte[] signatureBytes = sigFis.readAllBytes();
            
            // ডকুমেন্ট লোড করা
            FileInputStream docFis = new FileInputStream("DigitalSignedDocument.docx");
            byte[] docBytes = docFis.readAllBytes();

            // সিগনেচার যাচাই
            Signature signature = Signature.getInstance("SHA256withRSA");
            signature.initVerify(publicKey);
            signature.update(docBytes);
            boolean isSignatureValid = signature.verify(signatureBytes);

            if (isSignatureValid) {
                System.out.println("Digital Signature is valid!");
            } else {
                System.out.println("Digital Signature is invalid!");
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

কোডের ব্যাখ্যা:

  • KeyFactory: পাবলিক কী তৈরি করার জন্য ব্যবহৃত হয়।
  • Signature.verify(): সিগনেচার যাচাই করার জন্য এটি ব্যবহার করা হয়।

এই উদাহরণে, আপনি Public Key ব্যবহার করে ডকুমেন্টের সিগনেচার যাচাই করছেন।


৩. Apache POI এর মাধ্যমে Digital Signature এবং Document Authentication এর সীমাবদ্ধতা

  • Apache POI সরাসরি ডিজিটাল সিগনেচার যোগ করার জন্য একটি প্রাক-নির্ধারিত ফিচার সরবরাহ করে না। তবে, বাইরের লাইব্রেরি যেমন BouncyCastle ব্যবহার করে আপনি এটি করতে পারেন।
  • Document Authentication এর জন্য ডিজিটাল সিগনেচার হল সবচেয়ে নিরাপদ এবং জনপ্রিয় পদ্ধতি, কিন্তু এটি শুধুমাত্র তখনই কার্যকরী যখন আপনার Private Key এবং Public Key নিরাপদে সংরক্ষিত থাকে।

Apache POI মূলত Microsoft Word ডকুমেন্টে কাজ করার জন্য ব্যবহৃত হলেও, Digital Signature এবং Document Authentication যোগ করার জন্য বাইরের লাইব্রেরি যেমন BouncyCastle ব্যবহার করা হয়। ডিজিটাল সিগনেচার ডকুমেন্টের নিরাপত্তা নিশ্চিত করতে সহায়ক, এবং এটি ডকুমেন্টের প্রকৃততা যাচাই করতে ব্যবহৃত হয়। যদিও Apache POI সরাসরি এই ফিচারটি সমর্থন করে না, তবে বাইরের ক্রিপ্টোগ্রাফিক লাইব্রেরি ব্যবহার করে আপনি digital signature তৈরি এবং যাচাই করতে পারবেন।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion