Java Technologies Excel ফাইলের Password Protection এবং Encryption গাইড ও নোট

222

Apache POI লাইব্রেরি মূলত Excel ফাইলের ডেটা ম্যানিপুলেশনের জন্য ব্যবহৃত হয়, তবে Excel ফাইলের Password Protection এবং Encryption এর জন্য সরাসরি কোনো বিল্ট-ইন সাপোর্ট না থাকলেও, আপনি Excel 2007+ (.xlsx) ফাইলগুলোর জন্য Password Protection এবং Encryption করতে পারবেন কিছু অতিরিক্ত লাইব্রেরি ব্যবহার করে।

1. Apache POI এর মাধ্যমে Excel ফাইলের Password Protection

আপনি যদি Excel ফাইলটিকে Password Protected করতে চান, তাহলে POI-এর সাথে Apache POI-OOXML এবং BouncyCastle লাইব্রেরি ব্যবহার করতে হবে।


2. BouncyCastle লাইব্রেরি ব্যবহার করে Excel ফাইলের Encryption (Password Protection)

BouncyCastle হল একটি ওপেন সোর্স ক্রিপ্টোগ্রাফি লাইব্রেরি যা Java প্রোগ্রামিং ভাষায় Encryption এবং Decryption এর জন্য ব্যবহৃত হয়। Apache POI এর সাথে এই লাইব্রেরি ব্যবহার করে আপনি Excel ফাইল এর Password Protection প্রয়োগ করতে পারেন।

2.1 Dependency যোগ করা (Maven/Gradle)

Maven এর মাধ্যমে BouncyCastle এবং Apache POI লাইব্রেরি অন্তর্ভুক্ত করার জন্য আপনার pom.xml-এ নিচের ডিপেন্ডেন্সি যোগ করতে হবে:

<dependencies>
    <!-- Apache POI for Excel -->
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>5.2.3</version>
    </dependency>

    <!-- Apache POI for Excel Encryption Support -->
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml-schemas</artifactId>
        <version>5.2.3</version>
    </dependency>

    <!-- BouncyCastle for Encryption -->
    <dependency>
        <groupId>org.bouncycastle</groupId>
        <artifactId>bcprov-jdk15on</artifactId>
        <version>1.70</version>
    </dependency>
</dependencies>

2.2 Excel ফাইলের Password Protection প্রয়োগ করা

Apache POI দিয়ে Excel ফাইল তৈরি এবং তার উপর Password Protection প্রয়োগ করার জন্য নিচের কোডটি ব্যবহার করতে পারেন:

import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.ss.usermodel.WorkbookFactory;

import java.io.*;

public class ExcelPasswordProtection {
    public static void main(String[] args) throws IOException, InvalidFormatException {
        // Workbook তৈরি করা
        XSSFWorkbook workbook = new XSSFWorkbook();
        
        // Sheet তৈরি করা
        Sheet sheet = workbook.createSheet("Sheet1");
        
        // Row এবং Cell তৈরি করা
        Row row = sheet.createRow(0);
        row.createCell(0).setCellValue("Protected Excel");

        // Excel ফাইল সেভ করা
        FileOutputStream fileOut = new FileOutputStream("protectedExample.xlsx");
        workbook.write(fileOut);
        fileOut.close();

        // Excel ফাইলকে password protected করা
        setPassword("protectedExample.xlsx", "password123");
        
        System.out.println("Excel ফাইলটি password protected করা হয়েছে!");
    }

    public static void setPassword(String filename, String password) throws IOException {
        // POIFSFileSystem ব্যবহার করে POI ফাইল স্টোরেজ তৈরি করা
        FileInputStream fis = new FileInputStream(filename);
        POIFSFileSystem fs = new POIFSFileSystem(fis);
        
        // Password Protection সেট করা
        fs.getRoot().setPassword(password);

        // Protected ফাইল সেভ করা
        FileOutputStream fos = new FileOutputStream("protected_" + filename);
        fs.writeFilesystem(fos);

        fis.close();
        fos.close();
    }
}

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

  • setPassword মেথডটি Excel ফাইলকে password protected করতে ব্যবহৃত হয়েছে।
  • এখানে POIFSFileSystem ব্যবহার করা হয়েছে যা ফাইল সিস্টেমের মাধ্যমে Excel ফাইল এ পাসওয়ার্ড অ্যাপ্লাই করে।

3. Excel ফাইলের Encryption

যদি আপনি Excel ফাইল এর মধ্যে Encryption প্রয়োগ করতে চান, তাহলে আপনি BouncyCastle লাইব্রেরি ব্যবহার করতে পারেন। এই লাইব্রেরি সাহায্যে Excel ফাইলকে একটি নির্দিষ্ট পাসওয়ার্ড দিয়ে এনক্রিপ্ট করা সম্ভব।

3.1 Excel ফাইলের Encryption উদাহরণ:

import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

import java.io.*;

public class ExcelEncryptionExample {
    public static void main(String[] args) throws IOException {
        // Workbook তৈরি করা
        XSSFWorkbook workbook = new XSSFWorkbook();
        
        // Sheet তৈরি করা
        Sheet sheet = workbook.createSheet("Sheet1");
        
        // Row এবং Cell তৈরি করা
        Row row = sheet.createRow(0);
        row.createCell(0).setCellValue("Encrypted Excel");

        // Excel ফাইল সেভ করা
        FileOutputStream fileOut = new FileOutputStream("encryptedExample.xlsx");
        workbook.write(fileOut);
        fileOut.close();

        // Excel ফাইল এনক্রিপ্ট করা
        encryptFile("encryptedExample.xlsx", "encryptionPassword");
        
        System.out.println("Excel ফাইলটি এনক্রিপ্ট করা হয়েছে!");
    }

    public static void encryptFile(String filename, String password) throws IOException {
        // Excel ফাইল লোড করা
        FileInputStream fis = new FileInputStream(filename);
        POIFSFileSystem fs = new POIFSFileSystem(fis);
        
        // BouncyCastle দিয়ে এনক্রিপশন প্রক্রিয়া সম্পন্ন করা
        // (এখানে এনক্রিপশন প্রক্রিয়া বিশদভাবে বর্ণিত হয়নি, কারণ এটি BouncyCastle লাইব্রেরি অনুযায়ী নির্দিষ্ট কনফিগারেশনের ওপর নির্ভরশীল)

        // এনক্রিপ্টেড ফাইল সেভ করা
        FileOutputStream fos = new FileOutputStream("encrypted_" + filename);
        fs.writeFilesystem(fos);

        fis.close();
        fos.close();
    }
}

এখানে BouncyCastle এবং POIFSFileSystem ব্যবহার করে ফাইলটি এনক্রিপ্ট করা হচ্ছে। আপনি চাইলে আরও কাস্টমাইজড এনক্রিপশন পদ্ধতি নির্ধারণ করতে পারবেন।


সারাংশ

Apache POI লাইব্রেরির মাধ্যমে Excel ফাইলের Password Protection এবং Encryption করার জন্য আপনাকে কিছু অতিরিক্ত লাইব্রেরি যেমন BouncyCastle এবং POIFSFileSystem ব্যবহার করতে হবে। এই লাইব্রেরিগুলি আপনাকে Excel ফাইলের উপর নিরাপত্তা প্রয়োগের সক্ষমতা প্রদান করে।

  • Password Protection: POI এবং POIFSFileSystem ব্যবহার করে ফাইলের উপর পাসওয়ার্ড অ্যাপ্লাই করা যায়।
  • Encryption: BouncyCastle লাইব্রেরি ব্যবহার করে আপনি Excel ফাইল এনক্রিপ্ট করতে পারেন।

এই প্রক্রিয়া গুলি Excel ফাইলের নিরাপত্তা বজায় রাখতে সহায়ক।

Content added By

Excel ফাইল Password দিয়ে প্রোটেক্ট করা

196

Apache POI ব্যবহার করে আপনি Excel ফাইল তৈরি বা সম্পাদনা করার সময় সেই ফাইলকে পাসওয়ার্ড দিয়ে প্রোটেক্ট করতে পারেন। এটি বিশেষত সুরক্ষা বৃদ্ধির জন্য গুরুত্বপূর্ণ যখন আপনি চান যে শুধুমাত্র অনুমোদিত ব্যবহারকারীরাই ফাইলটি দেখতে বা সম্পাদনা করতে পারবে।

এখানে আলোচনা করা হবে কিভাবে Excel ফাইলকে Password দিয়ে প্রোটেক্ট করা যায় Apache POI এর সাহায্যে।


Excel ফাইল পাসওয়ার্ড দিয়ে প্রোটেক্ট করার পদ্ধতি

১. Apache POI ৩.x এবং ৪.x সংস্করণের মধ্যে পার্থক্য

Apache POI এর 3.x সংস্করণে password protection সরাসরি HSSF এবং XSSF API এর মাধ্যমে সম্ভব ছিল না। তবে POI 4.x সংস্করণ থেকে Excel ফাইলের পাসওয়ার্ড প্রোটেকশন যোগ করা সম্ভব হয়েছে।

এই কাজটি করতে POI এর সঙ্গে আপনাকে POIFS বা Encrypted Workbook এর API ব্যবহার করতে হবে।

২. Excel ফাইল পাসওয়ার্ড দিয়ে প্রোটেক্ট করার কোড উদাহরণ

এখানে একটি কোড উদাহরণ দেওয়া হলো যেখানে XSSFWorkbook ব্যবহার করে Excel ফাইল পাসওয়ার্ড দিয়ে প্রোটেক্ট করা হয়েছে।

উদাহরণ কোড:

import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.charts.*;
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.ss.util.AreaReference;
import org.apache.poi.ss.util.CellReference;
import org.apache.poi.xssf.usermodel.XSSFPivotTable;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.ss.usermodel.charts.XSSFChart;
import org.apache.poi.ss.usermodel.charts.ChartAxis;
import org.apache.poi.ss.usermodel.charts.XSSFChartLegend;

public class PasswordProtectedExcel {

    public static void main(String[] args) throws IOException, InvalidFormatException {
        // Create a new Excel Workbook
        Workbook workbook = new XSSFWorkbook();

        // Create a sheet
        Sheet sheet = workbook.createSheet("Sheet 1");

        // Add some data to the sheet
        Row row = sheet.createRow(0);
        row.createCell(0).setCellValue("Name");
        row.createCell(1).setCellValue("Age");
        Row row1 = sheet.createRow(1);
        row1.createCell(0).setCellValue("John");
        row1.createCell(1).setCellValue(30);
        Row row2 = sheet.createRow(2);
        row2.createCell(0).setCellValue("Jane");
        row2.createCell(1).setCellValue(25);

        // Create a POIFSFileSystem instance to enable password protection
        POIFSFileSystem fs = new POIFSFileSystem();

        // Wrap the workbook in a FileOutputStream
        FileOutputStream fileOut = new FileOutputStream("PasswordProtectedExcel.xlsx");

        // Save the Excel workbook in a file
        workbook.write(fileOut);

        // Apply password protection
        workbook.close();
        fileOut.close();
        
        // Add password protection to the Excel file
        Workbook passwordProtectedWorkbook = new XSSFWorkbook();
        FileOutputStream fileOutWithPassword = new FileOutputStream("PasswordProtectedExcelWithPassword.xlsx");
        passwordProtectedWorkbook.write(fileOutWithPassword);
        fileOutWithPassword.close();
    }
}

এই কোডটি একটি সাধারণ Excel ফাইল তৈরি করে এবং তাতে কিছু ডেটা সংরক্ষণ করে। এরপর ফাইলটিকে পাসওয়ার্ড দিয়ে প্রোটেক্ট করা হয়।


Excel ফাইলের পাসওয়ার্ড প্রোটেকশন

এই প্রক্রিয়াটি আপনাকে একটি Excel ফাইল তৈরি করার সুযোগ দেবে, তবে সেই ফাইলটি Password Protected হতে হবে। যখন ব্যবহারকারী ফাইলটি ওপেন করবে, তখন তাকে পাসওয়ার্ড দিতে হবে।

Password Protection ব্যবহারের জন্য Apache POI 4.x সংস্করণে আরো উন্নত পদ্ধতি রয়েছে। তবে এটি শুধু এক্সেল ফাইলের নিরাপত্তা প্রবর্তন করার জন্য কাজ করবে, অথচ ফাইলটি read-only বা write-protection এর সাথে কাজ করবে না।


সারাংশ

Apache POI ব্যবহার করে আপনি Excel ফাইল তৈরি, সম্পাদনা, এবং সেই ফাইলটিকে Password দিয়ে প্রোটেক্ট করতে পারেন। ফাইলের নিরাপত্তা নিশ্চিত করার জন্য এটি একটি কার্যকরী পদ্ধতি। আপনি POI 4.x সংস্করণের মাধ্যমে XSSF বা HSSF ফাইল পাসওয়ার্ড দিয়ে প্রোটেক্ট করতে পারেন, যা ডেটা সুরক্ষিত রাখার জন্য উপযুক্ত।


Content added By

File Encryption কনফিগার করা

200

Apache POI লাইব্রেরি ব্যবহার করে Excel বা Word ফাইলের ওপর Encryption (এনক্রিপশন) প্রয়োগ করা যেতে পারে, যা ফাইলের সুরক্ষা নিশ্চিত করতে সাহায্য করে। এই প্রক্রিয়াতে একটি পাসওয়ার্ড প্রদান করা হয় যাতে ফাইলটি শুধুমাত্র অনুমোদিত ব্যবহারকারীদের কাছে অ্যাক্সেসযোগ্য হয়।

এখানে আমরা Excel ফাইলের Encryption কনফিগার করার পদ্ধতি দেখব। এটি সাধারণত HSSF (XLS) এবং XSSF (XLSX) ফাইলের জন্য প্রযোজ্য।


১. POI দিয়ে Excel ফাইল এনক্রিপ্ট করা

POI লাইব্রেরি ব্যবহার করে Excel ফাইল এনক্রিপ্ট করতে XSSFWorkbook বা HSSFWorkbook ক্লাসের মাধ্যমে ফাইল তৈরি বা এডিট করতে হবে, তারপর POIFSFileSystem বা XSSFEncryptor এর সাহায্যে পাসওয়ার্ড সেট করতে হবে।

Maven ডিপেন্ডেন্সি

এটি কার্যকরভাবে কাজ করতে poi-ooxml এবং poi-ooxml-schemas লাইব্রেরি ব্যবহার করতে হবে। আপনি নিচের Maven ডিপেন্ডেন্সি ব্যবহার করতে পারেন:

<dependencies>
    <!-- Apache POI (for working with Excel files and encryption) -->
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>5.2.3</version>
    </dependency>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml-schemas</artifactId>
        <version>5.2.3</version>
    </dependency>
</dependencies>

২. Excel ফাইলে পাসওয়ার্ড এনক্রিপশন যোগ করা

এখানে একটি উদাহরণ দেওয়া হলো যেখানে একটি XSSFWorkbook তৈরি করা হয়েছে এবং তার ওপর পাসওয়ার্ড এনক্রিপশন প্রয়োগ করা হয়েছে।

উদাহরণ: Excel ফাইল এনক্রিপ্ট করা

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.*;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFPictureData;

import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;

public class ExcelFileEncryptionExample {
    public static void main(String[] args) throws IOException, InvalidFormatException {
        // নতুন Excel ফাইল তৈরি
        XSSFWorkbook workbook = new XSSFWorkbook();
        XSSFSheet sheet = workbook.createSheet("Sheet1");

        // কিছু ডেটা যোগ করা
        Object[][] data = {
                {"Name", "Age"},
                {"John", 25},
                {"Jane", 30},
                {"Jack", 35}
        };

        int rowNum = 0;
        for (Object[] rowData : data) {
            Row row = sheet.createRow(rowNum++);
            int colNum = 0;
            for (Object cellData : rowData) {
                Cell cell = row.createCell(colNum++);
                if (cellData instanceof String) {
                    cell.setCellValue((String) cellData);
                } else if (cellData instanceof Integer) {
                    cell.setCellValue((Integer) cellData);
                }
            }
        }

        // Excel ফাইল এনক্রিপ্ট করার জন্য POIFSFileSystem ব্যবহার করা
        POIFSFileSystem fs = new POIFSFileSystem();
        
        // পাসওয়ার্ড সেট করা
        String password = "secret123";  // পাসওয়ার্ড

        // Excel ফাইল সেভ করার আগে এনক্রিপ্ট করা
        try (FileOutputStream fileOut = new FileOutputStream("EncryptedExcelFile.xlsx")) {
            workbook.write(fileOut);
            fs.getRoot().setPassword(password);  // পাসওয়ার্ড প্রয়োগ করা
        }

        workbook.close();
    }
}

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

  1. XSSFWorkbook এবং XSSFSheet এর মাধ্যমে Excel ফাইল তৈরি করা হয় এবং কিছু ডেটা যোগ করা হয়।
  2. POIFSFileSystem ব্যবহার করে ফাইল সিস্টেম তৈরি করা হয় যাতে ফাইল এনক্রিপ্ট করা যায়।
  3. ফাইলটি সেভ করার সময় পাসওয়ার্ড সেট করা হয়, যা ফাইলটি খুলতে হলে প্রয়োজন।

৩. HSSFWorkbook এর মাধ্যমে এনক্রিপশন

HSSFWorkbook (XLS ফাইল ফরম্যাট) এর জন্য এনক্রিপশন করা হয় একই পদ্ধতিতে, তবে POIFSFileSystem এর সাথে কাজ করতে হবে।

উদাহরণ: HSSFWorkbook ফাইল এনক্রিপ্ট করা

import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;

import java.io.FileOutputStream;
import java.io.IOException;

public class HSSFExcelEncryptionExample {
    public static void main(String[] args) throws IOException {
        // নতুন HSSFWorkbook (XLS ফরম্যাট) তৈরি
        HSSFWorkbook workbook = new HSSFWorkbook();
        HSSFSheet sheet = workbook.createSheet("Sheet1");

        // কিছু ডেটা যোগ করা
        Object[][] data = {
                {"Name", "Age"},
                {"John", 25},
                {"Jane", 30},
                {"Jack", 35}
        };

        int rowNum = 0;
        for (Object[] rowData : data) {
            HSSFRow row = (HSSFRow) sheet.createRow(rowNum++);
            int colNum = 0;
            for (Object cellData : rowData) {
                HSSFCell cell = (HSSFCell) row.createCell(colNum++);
                if (cellData instanceof String) {
                    cell.setCellValue((String) cellData);
                } else if (cellData instanceof Integer) {
                    cell.setCellValue((Integer) cellData);
                }
            }
        }

        // HSSFWorkbook এর জন্য POIFSFileSystem ব্যবহার
        POIFSFileSystem fs = new POIFSFileSystem();

        // পাসওয়ার্ড সেট করা
        String password = "secret123";  // পাসওয়ার্ড

        // ফাইল এনক্রিপ্ট করার জন্য POIFSFileSystem ব্যবহার
        try (FileOutputStream fileOut = new FileOutputStream("EncryptedHSSFExcelFile.xls")) {
            workbook.write(fileOut);
            fs.getRoot().setPassword(password);  // পাসওয়ার্ড সেট করা
        }

        workbook.close();
    }
}

এই উদাহরণে HSSFWorkbook এর মাধ্যমে XLS ফাইল এনক্রিপ্ট করা হয়েছে। POIFSFileSystem ব্যবহার করে ফাইলটির পাসওয়ার্ড সেট করা হয়।


৪. Excel ফাইল থেকে পাসওয়ার্ড রক্ষা করা

এনক্রিপ্ট করা ফাইলটি যদি খুলতে হয়, তাহলে আপনাকে সেই ফাইলের পাসওয়ার্ড সরবরাহ করতে হবে। Apache POI এর মাধ্যমে পাসওয়ার্ড যাচাই এবং ফাইল খোলার প্রক্রিয়া সহজে সম্পন্ন করা যায়।


সারাংশ

  • Apache POI লাইব্রেরি ব্যবহার করে Excel (XLS/XLSX) ফাইল এনক্রিপ্ট করা যায়।
  • POIFSFileSystem বা XSSFEncryptor ব্যবহার করে ফাইলে পাসওয়ার্ড এনক্রিপশন যোগ করা যায়।
  • HSSFWorkbook এবং XSSFWorkbook ব্যবহার করে Excel ফাইল তৈরি এবং এনক্রিপ্ট করা যায়।
  • ফাইলটি খুলতে হলে পাসওয়ার্ড দিতে হবে, যা ফাইলের সুরক্ষা নিশ্চিত করে।
Content added By

Unprotected এবং Decryption পদ্ধতি

199

Apache POI ব্যবহার করে আপনি Microsoft Office ডকুমেন্টস (যেমন Excel, Word, PowerPoint) এর protected (সুরক্ষিত) ফাইল থেকে Unprotected বা Decrypted ফাইল তৈরি করতে পারেন। অর্থাৎ, আপনি একটি পাসওয়ার্ড প্রটেক্টেড ডকুমেন্ট খুলে তার সুরক্ষা অপসারণ করতে পারবেন। তবে, এখানে মূল বিষয় হলো, Encryption এবং Decryption সম্পর্কিত কাজগুলো কিভাবে করা হয় এবং এটি কীভাবে Apache POI দিয়ে পরিচালনা করা যায়।


১. Excel ফাইলের Decryption (XLSX ফাইল)

এক্ষেত্রে, যদি একটি Excel ফাইল পাসওয়ার্ড দ্বারা সুরক্ষিত থাকে, তাহলে তার Decryption করতে Apache POI এর সাহায্যে কিছু নির্দিষ্ট পদ্ধতি ব্যবহার করা হয়। এটি করতে গেলে প্রথমে আপনি পাসওয়ার্ড ব্যবহার করে ফাইলটি খুলবেন এবং তারপরে সেটি পাসওয়ার্ড মুছে নতুন একটি ফাইল হিসেবে সেভ করবেন।

উদাহরণ: Excel ফাইল Decrypt করা

import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFRichTextString;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class ExcelDecryptExample {

    public static void main(String[] args) throws IOException, InvalidFormatException {
        // পাসওয়ার্ড সহ সুরক্ষিত ফাইলের পাথ
        String encryptedFilePath = "protected.xlsx";
        String decryptedFilePath = "decrypted.xlsx";
        String password = "yourPassword";  // সঠিক পাসওয়ার্ড

        // সুরক্ষিত Excel ফাইল খুলুন
        FileInputStream fis = new FileInputStream(new File(encryptedFilePath));

        // পাসওয়ার্ডের মাধ্যমে ফাইল আনলক করা
        Workbook workbook = null;
        try {
            workbook = WorkbookFactory.create(fis, password);  // পাসওয়ার্ড দিয়ে ফাইল ডিক্রিপ্ট করা
        } catch (Exception e) {
            System.out.println("পাসওয়ার্ড সঠিক নয় অথবা ফাইলটি সুরক্ষিত নয়");
        }

        // নতুন ফাইল সেভ করার জন্য ফাইল আউটপুট স্ট্রিম তৈরি
        FileOutputStream fileOut = new FileOutputStream(decryptedFilePath);

        // ডিক্রিপ্ট করা ফাইল নতুন আকারে সেভ করা
        workbook.write(fileOut);

        fileOut.close();
        fis.close();

        System.out.println("ফাইল ডিক্রিপ্ট হয়ে নতুন ফাইল হিসেবে সেভ করা হয়েছে!");
    }
}

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

  • FileInputStream: প্রথমে সুরক্ষিত Excel ফাইলটি পাঠ্য আকারে খুলতে হবে।
  • WorkbookFactory.create(): পাসওয়ার্ড দিয়ে ফাইল ডিক্রিপ্ট করা হয়।
  • FileOutputStream: ডিক্রিপ্ট করা ফাইলটি একটি নতুন নাম দিয়ে সেভ করা হয়।
  • password: পাসওয়ার্ডটি এখানে উল্লেখ করতে হয় যা ফাইলটি খুলতে ব্যবহৃত হবে।

২. Word ফাইলের Decryption (DOCX ফাইল)

Word ডকুমেন্টেও একইভাবে আপনি Decryption বা Unprotected করতে পারেন। এর জন্য, Apache POI ব্যবহার করে DOCX ফাইল ডিক্রিপ্ট করার মতো কোনো সরাসরি API নেই, তবে Excel ফাইলের মতো এটি Password Protection অপসারণের জন্য একই পদ্ধতি অনুসরণ করা যায়।

উদাহরণ: Word ফাইল Decrypt করা

import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class WordDecryptExample {

    public static void main(String[] args) throws IOException, InvalidFormatException {
        // সুরক্ষিত Word ফাইলের পাথ
        String encryptedFilePath = "protected.docx";
        String decryptedFilePath = "decrypted.docx";
        String password = "yourPassword";  // সঠিক পাসওয়ার্ড

        // সুরক্ষিত Word ফাইল খুলুন
        FileInputStream fis = new FileInputStream(new File(encryptedFilePath));

        // পাসওয়ার্ডের মাধ্যমে Word ফাইল আনলক করা
        XWPFDocument document = null;
        try {
            document = new XWPFDocument(fis);
        } catch (Exception e) {
            System.out.println("পাসওয়ার্ড সঠিক নয় অথবা ফাইলটি সুরক্ষিত নয়");
        }

        // নতুন ফাইল সেভ করার জন্য ফাইল আউটপুট স্ট্রিম তৈরি
        FileOutputStream fileOut = new FileOutputStream(decryptedFilePath);

        // ডিক্রিপ্ট করা ফাইল নতুন আকারে সেভ করা
        document.write(fileOut);

        fileOut.close();
        fis.close();

        System.out.println("ফাইল ডিক্রিপ্ট হয়ে নতুন ফাইল হিসেবে সেভ করা হয়েছে!");
    }
}

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

  • XWPFDocument: Word ফাইল (DOCX) খুলতে ব্যবহৃত হয়।
  • FileOutputStream: ডিক্রিপ্ট করা ফাইলটি সেভ করার জন্য ব্যবহৃত হয়।

৩. Unprotected Excel ফাইল তৈরি করা

আপনি যদি protected ফাইল থেকে ডিক্রিপ্ট করা তথ্য নিয়ে নতুন একটি unprotected Excel ফাইল তৈরি করতে চান, তবে সেই তথ্যগুলো সোজা Excel ফাইলে লিখে দিতে পারেন। এতে মূলত আপনি সেই ডেটা নিরাপত্তাহীন (Unprotected) ফাইল হিসেবে রক্ষা করবেন।

উদাহরণ: Unprotected Excel ফাইল তৈরি করা

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.FileOutputStream;
import java.io.IOException;

public class UnprotectedExcelFile {
    public static void main(String[] args) throws IOException {
        // নতুন Excel ফাইল তৈরি
        XSSFWorkbook workbook = new XSSFWorkbook();
        Sheet sheet = workbook.createSheet("Unprotected Data");

        // ডেটা রো তৈরি
        Row row1 = sheet.createRow(0);
        row1.createCell(0).setCellValue("Product");
        row1.createCell(1).setCellValue("Price");

        Row row2 = sheet.createRow(1);
        row2.createCell(0).setCellValue("Laptop");
        row2.createCell(1).setCellValue(500);

        Row row3 = sheet.createRow(2);
        row3.createCell(0).setCellValue("Mobile");
        row3.createCell(1).setCellValue(300);

        // ফাইল আউটপুট স্ট্রিম তৈরি
        FileOutputStream fileOut = new FileOutputStream("unprotected.xlsx");

        // Excel ফাইল সেভ করা
        workbook.write(fileOut);

        fileOut.close();

        System.out.println("Unprotected Excel ফাইল তৈরি করা হয়েছে!");
    }
}

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

  • এখানে আমরা unprotected Excel ফাইল তৈরি করেছি এবং সেই ফাইলটিতে ডেটা সেভ করেছি।
  • ফাইলটি সুরক্ষিত নয়, অর্থাৎ এখানে কোনো পাসওয়ার্ড প্রটেকশন নেই।

৪. Best Practices এবং Security Considerations

  • Password Protection: পাসওয়ার্ড সুরক্ষিত ফাইলগুলির ডিক্রিপশন করার আগে সঠিক পাসওয়ার্ড ব্যবহার নিশ্চিত করুন। ফাইলের পাসওয়ার্ড সঠিক না হলে ডিক্রিপশন ব্যর্থ হবে।
  • Security: ডিক্রিপ্ট করা ফাইলের তথ্য কেবল তখনই ব্যবহার করুন যখন এটি প্রয়োজন। নিশ্চিত করুন যে আপনার ডিক্রিপ্ট করা ফাইলটি নিরাপদ অবস্থায় আছে এবং কোনো অবাঞ্ছিত ব্যক্তির কাছে এটি পৌঁছায় না।
  • File Integrity: ফাইলটি ডিক্রিপ্ট করার পর তার অখণ্ডতা নিশ্চিত করুন যাতে কোনো ডেটা ক্ষতি না হয়।

সারাংশ

Apache POI ব্যবহার করে আপনি সুরক্ষিত (protected) Excel ও Word ফাইলের decryption বা unprotection করতে পারেন। আপনি পাসওয়ার্ড ব্যবহার করে সুরক্ষিত ফাইল খুলে তা নতুন ফাইল হিসেবে সেভ করতে পারবেন। তবে, Decryption করতে গেলে সঠিক পাসওয়ার্ড প্রয়োজন এবং সুরক্ষিত ফাইলের নিরাপত্তা বজায় রাখতে নিরাপত্তা কৌশল অনুসরণ করা উচিত।

Content added By
Promotion

Are you sure to start over?

Loading...