Java KeyGenerator ক্লাস এর মাধ্যমে Key তৈরি করা

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

468

Java KeyGenerator ক্লাস হল Java Cryptography Architecture (JCA) এর একটি গুরুত্বপূর্ণ অংশ যা বিভিন্ন ক্রিপটোগ্রাফি এলগোরিদমের জন্য কীগুলি তৈরি করতে ব্যবহৃত হয়। এটি সিমেট্রিক কী এবং হ্যাশ ফাংশন তৈরি করতে ব্যবহৃত হয়। উদাহরণস্বরূপ, AES, DES, HMAC ইত্যাদির জন্য কী জেনারেট করা যায়।

এটি মূলত KeyPair তৈরি করতে পারে (যেমন RSA বা DSA এর জন্য) এবং সিমেট্রিক এনক্রিপশন অ্যালগোরিদমের জন্য সিক্রেট কী জেনারেট করতে ব্যবহৃত হয়।

KeyGenerator ক্লাস এর ব্যবহার

KeyGenerator ক্লাসটি javax.crypto প্যাকেজে অন্তর্ভুক্ত এবং এটি সিমেট্রিক কী তৈরি করার জন্য ব্যবহৃত হয়। সিমেট্রিক ক্রিপটোগ্রাফি-তে একই কী ব্যবহার করা হয় ডেটা এনক্রিপ্ট এবং ডিক্রিপ্ট করতে। একটি কী জেনারেট করার জন্য KeyGenerator ক্লাসটি ব্যবহার করা হয় এবং এটি বিভিন্ন ক্রিপটোগ্রাফিক অ্যালগোরিদম সাপোর্ট করে যেমন AES, DES, HMAC ইত্যাদি।

১. AES (Advanced Encryption Standard) Key Generation Example

import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import java.util.Base64;

public class AESKeyGenerationExample {
    public static void main(String[] args) throws Exception {
        // Create a KeyGenerator instance for AES algorithm
        KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");
        
        // Initialize the key size (128, 192, or 256 bits)
        keyGenerator.init(128);  // 128-bit AES key
        
        // Generate the secret key
        SecretKey secretKey = keyGenerator.generateKey();
        
        // Print the generated AES key in Base64 format
        String encodedKey = Base64.getEncoder().encodeToString(secretKey.getEncoded());
        System.out.println("Generated AES Key (Base64 encoded): " + encodedKey);
    }
}

Output Example:

Generated AES Key (Base64 encoded): nOa3mn2jJ7F7y8usZ7NjIQ==

এখানে:

  • KeyGenerator.getInstance("AES") ব্যবহার করে AES অ্যালগোরিদমের জন্য একটি কী জেনারেটর তৈরি করা হয়েছে।
  • keyGenerator.init(128) দ্বারা কী সাইজ 128-বিটে সেট করা হয়েছে (AES এর জন্য 128, 192 বা 256-বিট কী ব্যবহার করা যেতে পারে)।
  • secretKey.getEncoded() দ্বারা কীগুলির বাইট রূপে পাওয়া গেছে এবং তারপর Base64 এ এনকোড করা হয়েছে যাতে এটি পাঠযোগ্য হয়।

২. DES (Data Encryption Standard) Key Generation Example

import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import java.util.Base64;

public class DESKeyGenerationExample {
    public static void main(String[] args) throws Exception {
        // Create a KeyGenerator instance for DES algorithm
        KeyGenerator keyGenerator = KeyGenerator.getInstance("DES");
        
        // Initialize the key size (56 bits for DES)
        keyGenerator.init(56);  // DES key size is fixed at 56 bits
        
        // Generate the secret key
        SecretKey secretKey = keyGenerator.generateKey();
        
        // Print the generated DES key in Base64 format
        String encodedKey = Base64.getEncoder().encodeToString(secretKey.getEncoded());
        System.out.println("Generated DES Key (Base64 encoded): " + encodedKey);
    }
}

Output Example:

Generated DES Key (Base64 encoded): 7nFqReT2XIuOUAK8Cm5Yjw==

এখানে:

  • KeyGenerator.getInstance("DES") দ্বারা DES অ্যালগোরিদমের জন্য একটি কী জেনারেটর তৈরি করা হয়েছে।
  • DES এর জন্য কী সাইজ সর্বদা 56-বিট থাকে, তাই keyGenerator.init(56) ব্যবহার করা হয়েছে।
  • Base64 এনকোডিং ব্যবহার করে কীগুলি প্রিন্ট করা হয়েছে যাতে এটি পাঠযোগ্য হয়।

৩. HMAC (Hash-based Message Authentication Code) Key Generation Example

HMAC (Hash-based Message Authentication Code) একটি ক্রিপটোগ্রাফিক পদ্ধতি যা হ্যাশ ফাংশন এবং একটি গোপন কী ব্যবহার করে বার্তা অখণ্ডতা এবং অথেন্টিকেশন নিশ্চিত করে। এখানে আমরা HMAC-SHA256 ব্যবহার করে কী তৈরি করব।

import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import java.util.Base64;

public class HMACKeyGenerationExample {
    public static void main(String[] args) throws Exception {
        // Create a KeyGenerator instance for HMAC (using SHA-256)
        KeyGenerator keyGenerator = KeyGenerator.getInstance("HmacSHA256");
        
        // Generate the secret key
        SecretKey secretKey = keyGenerator.generateKey();
        
        // Print the generated HMAC key in Base64 format
        String encodedKey = Base64.getEncoder().encodeToString(secretKey.getEncoded());
        System.out.println("Generated HMAC Key (Base64 encoded): " + encodedKey);
    }
}

Output Example:

Generated HMAC Key (Base64 encoded): fmlMnQ3Eyb0rBlWR1+5nBA==

এখানে:

  • KeyGenerator.getInstance("HmacSHA256") ব্যবহার করে HMAC-SHA256 অ্যালগোরিদমের জন্য একটি কী জেনারেটর তৈরি করা হয়েছে।
  • secretKey.getEncoded() ব্যবহার করে কীয়ের বাইট আউটপুট এবং Base64 এনকোডিং ব্যবহার করে এটি পাঠযোগ্য আউটপুট হিসেবে রূপান্তর করা হয়েছে।

RSA Key Pair Generation Example (Public and Private Keys)

RSA অ্যালগোরিদমের জন্য public এবং private কী জেনারেট করতে KeyPairGenerator ব্যবহার করা হয়।

import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.PrivateKey;
import java.security.PublicKey;

public class RSAKeyPairGeneration {
    public static void main(String[] args) throws Exception {
        // Create KeyPairGenerator instance for RSA
        KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
        
        // Initialize the key pair generator with key size (2048 bits)
        keyPairGenerator.initialize(2048);
        
        // Generate the RSA key pair
        KeyPair keyPair = keyPairGenerator.generateKeyPair();
        
        // Retrieve the public and private keys
        PublicKey publicKey = keyPair.getPublic();
        PrivateKey privateKey = keyPair.getPrivate();
        
        // Print the generated public and private keys
        System.out.println("Public Key: " + publicKey);
        System.out.println("Private Key: " + privateKey);
    }
}

Output Example:

Public Key: sun.security.rsa.RSAPublicKey@2a139a55
Private Key: sun.security.rsa.RSAPrivateKey@2b7fe8c0

এখানে:

  • KeyPairGenerator.getInstance("RSA") ব্যবহার করে RSA কী জেনারেটর তৈরি করা হয়েছে।
  • keyPairGenerator.initialize(2048) দ্বারা RSA কী সাইজ 2048 বিটে সেট করা হয়েছে।
  • keyPair.getPublic() এবং keyPair.getPrivate() ব্যবহার করে পাবলিক ও প্রাইভেট কী পাওয়া গেছে।

Java KeyGenerator ক্লাসটি সিমেট্রিক এবং হ্যাশ বেসড ক্রিপটোগ্রাফির জন্য কী তৈরিতে ব্যবহৃত হয়, এবং এটি বিভিন্ন ক্রিপটোগ্রাফি অ্যালগোরিদমের জন্য সিক্রেট কী তৈরি করতে সক্ষম। আপনি AES, DES, HMAC, এবং অন্যান্য অ্যালগোরিদমের জন্য কী তৈরি করতে এই ক্লাসটি ব্যবহার করতে পারেন। RSA এর জন্য কী জেনারেট করার জন্য KeyPairGenerator ব্যবহৃত হয়, যা পাবলিক এবং প্রাইভেট কী তৈরি করতে সহায়তা করে।

Content added By
Promotion

Are you sure to start over?

Loading...