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 Key | Asymmetric Key |
|---|---|---|
| কী সংখ্যা | একটিই কী (Secret Key) | দুটি কী (Public Key, Private Key) |
| এনক্রিপশন এবং ডিক্রিপশন | এক কী দিয়েই এনক্রিপ্ট এবং ডিক্রিপ্ট করা হয় | পাবলিক কী দিয়ে এনক্রিপ্ট এবং প্রাইভেট কী দিয়ে ডিক্রিপ্ট |
| গতি | দ্রুত, কম্পিউটেশনাল শক্তি কম প্রয়োজন | ধীর, তবে বেশি নিরাপত্তা |
| সুরক্ষা | যদি কী চুরি হয়, তবে ডেটা উন্মুক্ত হয়ে যায় | পাবলিক কী দিয়ে এনক্রিপ্ট করা, প্রাইভেট কী নিরাপদ থাকে |
| ব্যবহার | দ্রুত ডেটা এনক্রিপশন (ডেটা ট্রান্সফার) | ডিজিটাল সিগনেচার, নিরাপদ কী এক্সচেঞ্জ |
| এনক্রিপশন এলগোরিদম উদাহরণ | AES, DES | RSA, ECC |
| কী বিতরণ সমস্যা | কী বিতরণ একটি সমস্যা (কী শেয়ার করা কঠিন) | কী বিতরণ সহজ (পাবলিক কী দিয়ে এনক্রিপ্ট করা যায়, প্রাইভেট কী নিরাপদ থাকে) |
- Symmetric Key Generation দ্রুত এবং কম্পিউটেশনাল শক্তি কম প্রয়োজন হয়, এবং এটি সাধারণত ছোট ডেটার জন্য ব্যবহৃত হয় যেখানে একাধিক ব্যক্তি ডেটা অ্যাক্সেস করবে।
- Asymmetric Key Generation অধিক নিরাপত্তা প্রদান করে, যেখানে পাবলিক কী দ্বারা ডেটা এনক্রিপ্ট করা হয় এবং প্রাইভেট কী দ্বারা ডিক্রিপ্ট করা হয়। এটি সাধারণত নিরাপদ যোগাযোগ এবং ডিজিটাল সিগনেচার ব্যবস্থায় ব্যবহৃত হয়।
Java Cryptography API (JCA) এর মাধ্যমে আপনি এই দুটি কী তৈরি করতে পারেন এবং সেগুলির মাধ্যমে শক্তিশালী নিরাপত্তা ব্যবস্থা তৈরি করতে পারেন।
Read more