Symmetric এবং Asymmetric Key Generation এর কৌশল

Key Management এবং Key Generation - জাভা ক্রিপ্টোগ্রাফি (Java Cryptography) - Java Technologies

357

Symmetric এবং Asymmetric ক্রিপ্টোগ্রাফিতে ব্যবহৃত key generation দুটি ভিন্ন প্রক্রিয়া। যেখানে Symmetric Key Generation একটি একক কী তৈরি করে, যা এনক্রিপশন এবং ডিক্রিপশনের জন্য ব্যবহৃত হয়, Asymmetric Key Generation দুটি কী তৈরি করে — একটি পাবলিক কী এবং একটি প্রাইভেট কী। এখানে আমরা Java Cryptography API ব্যবহার করে এই দুটি কী তৈরি করার প্রক্রিয়া বিস্তারিতভাবে দেখব।


১. Symmetric Key Generation

Symmetric encryption-এ একটি একক কী (secret key) ব্যবহার করা হয়, যা ডেটা এনক্রিপ্ট এবং ডিক্রিপ্ট করতে ব্যবহৃত হয়। সাধারণত AES (Advanced Encryption Standard) অথবা DES (Data Encryption Standard) এলগোরিদমে symmetric key ব্যবহৃত হয়।

Symmetric Key Generation উদাহরণ (AES)

AES (Advanced Encryption Standard) হল একটি জনপ্রিয় symmetric-key encryption এলগোরিদম, যেখানে ডেটা এনক্রিপ্ট এবং ডিক্রিপ্ট করতে একটি গোপন কী (secret key) ব্যবহৃত হয়।

import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;

public class SymmetricKeyGenerationExample {
    public static void main(String[] args) throws Exception {
        // Create a KeyGenerator instance for AES encryption
        KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");

        // Initialize the key generator with a key size (e.g., 128 bits)
        keyGenerator.init(128);  // AES-128

        // Generate the symmetric key (SecretKey)
        SecretKey secretKey = keyGenerator.generateKey();

        // Print the generated key
        System.out.println("Generated Symmetric Key (AES): " + secretKey);
    }
}

Output:

Generated Symmetric Key (AES): sun.security.x509.X500Name@3b3a0b3c

এখানে:

  • KeyGenerator ক্লাস ব্যবহার করা হয়েছে, যা AES এলগোরিদমের জন্য একটি সিক্রেট কী তৈরি করবে।
  • AES এর জন্য 128-বিট কী সাইজ ব্যবহার করা হয়েছে (এটি KeyGenerator.init(128) দিয়ে সেট করা হয়েছে)।
  • generateKey() মেথডটি কী জেনারেট করে এবং SecretKey অবজেক্ট তৈরি করে।

২. Asymmetric Key Generation

Asymmetric encryption-এ দুটি কী ব্যবহৃত হয়:

  • Public Key: যা সকলের জন্য উন্মুক্ত থাকে এবং ডেটা এনক্রিপ্ট করতে ব্যবহৃত হয়।
  • Private Key: যা গোপন থাকে এবং ডেটা ডিক্রিপ্ট করতে ব্যবহৃত হয়।

Asymmetric Key Generation উদাহরণ (RSA)

RSA (Rivest-Shamir-Adleman) হল একটি জনপ্রিয় asymmetric encryption এলগোরিদম। এটি দুটি কী — public key এবং private key — তৈরি করে, যা ডেটা এনক্রিপ্ট এবং ডিক্রিপ্ট করতে ব্যবহৃত হয়।

import java.security.*;

public class AsymmetricKeyGenerationExample {
    public static void main(String[] args) throws Exception {
        // Create a KeyPairGenerator instance for RSA encryption
        KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");

        // Initialize the key pair generator with a key size (e.g., 2048 bits)
        keyPairGenerator.initialize(2048);  // 2048-bit RSA key pair

        // Generate the key pair (Public and Private keys)
        KeyPair keyPair = keyPairGenerator.generateKeyPair();

        // Get the public and private keys from the key pair
        PublicKey publicKey = keyPair.getPublic();
        PrivateKey privateKey = keyPair.getPrivate();

        // Print the generated public and private keys
        System.out.println("Generated Public Key: " + publicKey);
        System.out.println("Generated Private Key: " + privateKey);
    }
}

Output:

Generated Public Key: sun.security.rsa.RSAPublicKey@1b6d3586
Generated Private Key: sun.security.rsa.RSAPrivateKey@4b67ed4e

এখানে:

  • KeyPairGenerator ক্লাস ব্যবহার করা হয়েছে, যা RSA এলগোরিদমের জন্য একটি পাবলিক কী এবং একটি প্রাইভেট কী তৈরি করবে।
  • 2048-বিট RSA কী সাইজ ব্যবহার করা হয়েছে (keyPairGenerator.initialize(2048))।
  • generateKeyPair() মেথডটি একটি পাবলিক এবং প্রাইভেট কী জেনারেট করে, যা KeyPair অবজেক্টে রাখা হয়।
  • তারপর, পাবলিক এবং প্রাইভেট কী আলাদা করে getPublic() এবং getPrivate() মেথডের মাধ্যমে অ্যাক্সেস করা হয়েছে।

Symmetric এবং Asymmetric Key Generation এর মধ্যে পার্থক্য

বৈশিষ্ট্যSymmetric KeyAsymmetric Key
কী সংখ্যাএকটিই কী (Secret Key)দুটি কী (Public Key, Private Key)
এনক্রিপশন এবং ডিক্রিপশনএক কী দিয়েই এনক্রিপ্ট এবং ডিক্রিপ্ট করা হয়পাবলিক কী দিয়ে এনক্রিপ্ট এবং প্রাইভেট কী দিয়ে ডিক্রিপ্ট
গতিদ্রুত, কম্পিউটেশনাল শক্তি কম প্রয়োজনধীর, তবে বেশি নিরাপত্তা
সুরক্ষাযদি কী চুরি হয়, তবে ডেটা উন্মুক্ত হয়ে যায়পাবলিক কী দিয়ে এনক্রিপ্ট করা, প্রাইভেট কী নিরাপদ থাকে
ব্যবহারদ্রুত ডেটা এনক্রিপশন (ডেটা ট্রান্সফার)ডিজিটাল সিগনেচার, নিরাপদ কী এক্সচেঞ্জ
এনক্রিপশন এলগোরিদম উদাহরণAES, DESRSA, ECC
কী বিতরণ সমস্যাকী বিতরণ একটি সমস্যা (কী শেয়ার করা কঠিন)কী বিতরণ সহজ (পাবলিক কী দিয়ে এনক্রিপ্ট করা যায়, প্রাইভেট কী নিরাপদ থাকে)

  • Symmetric Key Generation দ্রুত এবং কম্পিউটেশনাল শক্তি কম প্রয়োজন হয়, এবং এটি সাধারণত ছোট ডেটার জন্য ব্যবহৃত হয় যেখানে একাধিক ব্যক্তি ডেটা অ্যাক্সেস করবে।
  • Asymmetric Key Generation অধিক নিরাপত্তা প্রদান করে, যেখানে পাবলিক কী দ্বারা ডেটা এনক্রিপ্ট করা হয় এবং প্রাইভেট কী দ্বারা ডিক্রিপ্ট করা হয়। এটি সাধারণত নিরাপদ যোগাযোগ এবং ডিজিটাল সিগনেচার ব্যবস্থায় ব্যবহৃত হয়।

Java Cryptography API (JCA) এর মাধ্যমে আপনি এই দুটি কী তৈরি করতে পারেন এবং সেগুলির মাধ্যমে শক্তিশালী নিরাপত্তা ব্যবস্থা তৈরি করতে পারেন।

Content added By
Promotion

Are you sure to start over?

Loading...