Asymmetric Key Cryptography (বা Public Key Cryptography) এমন একটি ক্রিপ্টোগ্রাফি পদ্ধতি যেখানে দুটি ভিন্ন কী ব্যবহার করা হয়: একটি পাবলিক কী এবং একটি প্রাইভেট কী। পাবলিক কী সবাইকে জানানো যেতে পারে, কিন্তু প্রাইভেট কীটি কেবলমাত্র কীটির মালিকের কাছে থাকে। Asymmetric Key Cryptography সাধারণত encryption, digital signatures, এবং key exchange protocols এর জন্য ব্যবহৃত হয়।
এটি Symmetric Key Cryptography (যেখানে একই কী ব্যবহার করে ডেটা এনক্রিপ্ট এবং ডিক্রিপ্ট করা হয়) থেকে আলাদা, কারণ এখানে দুটি কী ব্যবহৃত হয় যা একটি একে অপরের সাথে সম্পর্কিত।
Java Cryptography API-তে Asymmetric Key Cryptography সাধারণত RSA (Rivest-Shamir-Adleman), DSA (Digital Signature Algorithm), ECDSA (Elliptic Curve Digital Signature Algorithm) ইত্যাদি অ্যালগরিদম ব্যবহার করে বাস্তবায়ন করা হয়।
Asymmetric Key Cryptography এর মূল উপাদান দুটি কী:
RSA একটি জনপ্রিয় এবং নিরাপদ asymmetric encryption algorithm যা ব্যবহারকারীদের মধ্যে নিরাপদ যোগাযোগ প্রতিষ্ঠিত করতে ব্যবহৃত হয়।
প্রথমত, আমরা RSA কীগুলি তৈরি করব: একটি পাবলিক কী এবং একটি প্রাইভেট কী।
import java.security.*;
public class RSAKeyPairExample {
public static void main(String[] args) throws Exception {
// KeyPairGenerator ব্যবহার করে RSA key pair তৈরি করা
KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA");
keyPairGen.initialize(2048); // RSA key size 2048 bits
KeyPair keyPair = keyPairGen.generateKeyPair();
// পাবলিক কী এবং প্রাইভেট কী বের করা
PublicKey publicKey = keyPair.getPublic();
PrivateKey privateKey = keyPair.getPrivate();
// Print keys
System.out.println("Public Key: " + publicKey);
System.out.println("Private Key: " + privateKey);
}
}
Public Key: sun.security.rsa.RSAPublicKeyImpl@6d06d69c
Private Key: sun.security.rsa.RSAPrivateKeyImpl@7852e922
এখন আমরা পাবলিক কী দিয়ে এনক্রিপ্ট এবং প্রাইভেট কী দিয়ে ডেটা ডিক্রিপ্ট করব।
import javax.crypto.Cipher;
import java.security.*;
public class RSAEncryptionDecryption {
public static void main(String[] args) throws Exception {
// KeyPairGenerator ব্যবহার করে RSA key pair তৈরি করা
KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA");
keyPairGen.initialize(2048); // RSA key size 2048 bits
KeyPair keyPair = keyPairGen.generateKeyPair();
PublicKey publicKey = keyPair.getPublic();
PrivateKey privateKey = keyPair.getPrivate();
// এনক্রিপশন
String originalText = "Hello, this is a test message!";
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
byte[] encryptedText = cipher.doFinal(originalText.getBytes());
System.out.println("Encrypted Text: " + new String(encryptedText));
// ডিক্রিপশন
cipher.init(Cipher.DECRYPT_MODE, privateKey);
byte[] decryptedText = cipher.doFinal(encryptedText);
System.out.println("Decrypted Text: " + new String(decryptedText));
}
}
Encrypted Text: [B@6d06d69c // This will be in byte format, actual output will be byte data
Decrypted Text: Hello, this is a test message!
এখানে, এনক্রিপ্টেড টেক্সটটি বাইনারি আকারে থাকবে, কিন্তু ডিক্রিপশন করার পর আসল টেক্সট ফিরে পাওয়া যাবে।
Digital Signature ব্যবহার করে ডেটার প্রামাণিকতা এবং অখণ্ডতা নিশ্চিত করা যায়। প্রাইভেট কী দিয়ে সিগনেচার তৈরি করা হয়, এবং পাবলিক কী দিয়ে সিগনেচার যাচাই করা হয়।
import java.security.*;
import java.util.Base64;
public class DigitalSignatureExample {
public static void main(String[] args) throws Exception {
// KeyPairGenerator ব্যবহার করে RSA key pair তৈরি করা
KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA");
keyPairGen.initialize(2048); // RSA key size 2048 bits
KeyPair keyPair = keyPairGen.generateKeyPair();
PrivateKey privateKey = keyPair.getPrivate();
PublicKey publicKey = keyPair.getPublic();
// Signature প্রক্রিয়া
Signature signature = Signature.getInstance("SHA256withRSA");
signature.initSign(privateKey);
String data = "This is a message to be signed";
signature.update(data.getBytes());
// Digital Signature তৈরি করা
byte[] digitalSignature = signature.sign();
System.out.println("Digital Signature: " + Base64.getEncoder().encodeToString(digitalSignature));
// Signature যাচাই করা
signature.initVerify(publicKey);
signature.update(data.getBytes());
boolean isValid = signature.verify(digitalSignature);
System.out.println("Is Signature Valid: " + isValid);
}
}
Digital Signature: (Base64 Encoded Signature String)
Is Signature Valid: true
Asymmetric Key Cryptography Java Cryptography ফ্রেমওয়ার্কের একটি শক্তিশালী উপাদান যা নিরাপদ যোগাযোগ, ডিজিটাল সিগনেচার এবং সিকিউর কিপেয়ার শেয়ারিংয়ের জন্য ব্যবহৃত হয়। RSA এবং ECDSA হল সবচেয়ে জনপ্রিয় অ্যালগরিদম যা JCA/JCE এর মাধ্যমে Java-তে বাস্তবায়ন করা হয়। এই ধরনের ক্রিপ্টোগ্রাফি ব্যবহারের সময় key management, strong algorithms, এবং digital signatures এর সঠিক ব্যবহার নিশ্চিত করা উচিত।
Asymmetric Encryption হল এমন একটি ক্রিপটোগ্রাফিক পদ্ধতি যেখানে দুটি পৃথক কী ব্যবহৃত হয়: একটি public key (পাবলিক কী) এবং একটি private key (প্রাইভেট কী)। Public key ব্যবহার করে ডেটা এনক্রিপ্ট করা হয় এবং private key ব্যবহার করে সেই ডেটা ডিক্রিপ্ট করা হয়। এটি মূলত two-key encryption পদ্ধতির অংশ, যেখানে একটি কী ডেটা এনক্রিপ্ট করার জন্য এবং অন্যটি ডেটা ডিক্রিপ্ট করার জন্য ব্যবহৃত হয়।
Asymmetric Encryption এর মাধ্যমে Confidentiality (গোপনীয়তা), Authentication (অথেন্টিকেশন), এবং Non-repudiation (অস্বীকৃতির প্রতিরোধ) নিশ্চিত করা যায়।
যেহেতু পাবলিক কী সকলের কাছে উন্মুক্ত থাকে, তাই এটি কেবল এনক্রিপশন কাজেই ব্যবহার করা হয়, কিন্তু প্রাইভেট কী ব্যবহার করে সঠিকভাবে ডেটা পুনরুদ্ধার করা যায়।
RSA (Rivest-Shamir-Adleman):
ECC (Elliptic Curve Cryptography):
ElGamal:
Java Cryptography API (JCA) ব্যবহার করে RSA এনক্রিপশন এবং ডিক্রিপশন এর একটি উদাহরণ এখানে দেখানো হলো:
import java.security.*;
import javax.crypto.*;
import java.util.Base64;
public class RSAEncryptionExample {
public static void main(String[] args) throws Exception {
// KeyPairGenerator to generate Public and Private Keys
KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA");
keyPairGen.initialize(2048);
KeyPair pair = keyPairGen.generateKeyPair();
// Get the Public Key and Private Key
PublicKey publicKey = pair.getPublic();
PrivateKey privateKey = pair.getPrivate();
// The data to encrypt
String originalData = "Hello, this is a test message!";
// Encrypt the data using Public Key
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
byte[] encryptedData = cipher.doFinal(originalData.getBytes());
String encryptedDataStr = Base64.getEncoder().encodeToString(encryptedData);
System.out.println("Encrypted Data: " + encryptedDataStr);
// Decrypt the data using Private Key
cipher.init(Cipher.DECRYPT_MODE, privateKey);
byte[] decryptedData = cipher.doFinal(Base64.getDecoder().decode(encryptedDataStr));
String decryptedDataStr = new String(decryptedData);
System.out.println("Decrypted Data: " + decryptedDataStr);
}
}
Output:
Encrypted Data: (Encrypted Base64 String)
Decrypted Data: Hello, this is a test message!
এখানে:
Asymmetric Encryption একটি শক্তিশালী এবং নিরাপদ ক্রিপটোগ্রাফিক পদ্ধতি যা পাবলিক কী এবং প্রাইভেট কী ব্যবহার করে ডেটা এনক্রিপ্ট এবং ডিক্রিপ্ট করার জন্য ব্যবহৃত হয়। এটি Confidentiality, Authentication, Non-repudiation এবং Data Integrity নিশ্চিত করতে সহায়তা করে। RSA, ECC, এবং ElGamal হল প্রধান Asymmetric Encryption এলগোরিদম। Java Cryptography API (JCA) এর মাধ্যমে আপনি এই এলগোরিদমগুলো সহজেই ব্যবহার করতে পারেন আপনার সিস্টেমের নিরাপত্তা নিশ্চিত করতে।
RSA (Rivest-Shamir-Adleman) হল একটি asymmetric encryption algorithm যা public-key cryptography-তে ব্যবহৃত হয়। এই এলগোরিদমে দুটি কী ব্যবহৃত হয়:
RSA এলগোরিদমের মাধ্যমে আপনি public key দিয়ে ডেটা এনক্রিপ্ট করতে পারেন এবং শুধুমাত্র private key দিয়ে সেটি ডিক্রিপ্ট করা যাবে। এটি ডিজিটাল সিগনেচার এবং নিরাপদ ডেটা ট্রান্সফার ব্যবস্থায় ব্যাপকভাবে ব্যবহৃত হয়।
এখানে RSA Algorithm এর মাধ্যমে public key এবং private key ব্যবস্থাপনা দেখানো হবে, যেখানে RSA কী জেনারেশন, এনক্রিপশন এবং ডিক্রিপশন কিভাবে করা হয় তা শিখানো হবে।
RSA কী জেনারেশন একটি গুরুত্বপূর্ণ পদক্ষেপ, যেখানে একটি পাবলিক কী এবং একটি প্রাইভেট কী তৈরি করা হয়। এই কী জেনারেশন প্রক্রিয়া সুরক্ষা নিশ্চিত করে এবং এনক্রিপশন এবং ডিক্রিপশনে ব্যবহৃত হয়।
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.Security;
public class RSAKeyPairGeneration {
public static void main(String[] args) throws Exception {
// Initialize KeyPairGenerator with RSA algorithm
KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA");
keyPairGen.initialize(2048); // Set key size to 2048 bits
// Generate the RSA Key Pair
KeyPair keyPair = keyPairGen.generateKeyPair();
PublicKey publicKey = keyPair.getPublic();
PrivateKey privateKey = keyPair.getPrivate();
// Print the generated keys
System.out.println("Public Key: " + publicKey);
System.out.println("Private Key: " + privateKey);
}
}
Output Example:
Public Key: java.security.interfaces.RSAPublicKey@5f184fc6
Private Key: java.security.interfaces.RSAPrivateKey@5d0a93f7
এখানে:
এবার আমরা RSA Public Key ব্যবহার করে ডেটা এনক্রিপ্ট (encryption) করব।
import javax.crypto.Cipher;
import java.security.KeyFactory;
import java.security.PublicKey;
import java.security.PrivateKey;
import java.security.Signature;
import java.util.Base64;
public class RSAEncryptionExample {
public static void main(String[] args) throws Exception {
// Example text to encrypt
String textToEncrypt = "Hello, this is a secret message!";
// Initialize Cipher for RSA encryption
Cipher cipher = Cipher.getInstance("RSA");
// Generate RSA Key Pair
KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA");
keyPairGen.initialize(2048); // 2048-bit key
KeyPair keyPair = keyPairGen.generateKeyPair();
PublicKey publicKey = keyPair.getPublic();
PrivateKey privateKey = keyPair.getPrivate();
// Encrypt data using public key
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
byte[] encryptedData = cipher.doFinal(textToEncrypt.getBytes());
// Print the encrypted data (Base64 encoded)
System.out.println("Encrypted Text: " + Base64.getEncoder().encodeToString(encryptedData));
// Decrypt data using private key
cipher.init(Cipher.DECRYPT_MODE, privateKey);
byte[] decryptedData = cipher.doFinal(encryptedData);
System.out.println("Decrypted Text: " + new String(decryptedData));
}
}
Output:
Encrypted Text: q1pnZ07BdJGlDhsQATq9d55kC8gWmfqCm2jD0z7n6c9sT8xw0V4evg9wHJkJ9fo8nz3U90z57gWZGvqStO1EkvY6OhkVXjHgyDRm65FBsm5n5I+uWgLJkgE6xw3HQh6omEZsA3E3LxAXgZAzlXJbNmXZkHz7nKMQqugFLQ==
Decrypted Text: Hello, this is a secret message!
এখানে:
RSA Public এবং Private Key এর মাধ্যমে ডিজিটাল সিগনেচার তৈরি এবং যাচাই করা সম্ভব। এটি মূলত ডিজিটাল সিগনেচার সিস্টেমে ব্যবহৃত হয় যাতে নিশ্চিত করা যায় যে একটি বার্তা বা ডেটা সত্যিই একটি নির্দিষ্ট ব্যক্তি বা সিস্টেম দ্বারা সৃষ্ট।
import java.security.*;
import javax.crypto.Cipher;
public class RSADigitalSignatureExample {
public static void main(String[] args) throws Exception {
// Generate RSA Key Pair
KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA");
keyPairGen.initialize(2048); // 2048-bit RSA key
KeyPair keyPair = keyPairGen.generateKeyPair();
PublicKey publicKey = keyPair.getPublic();
PrivateKey privateKey = keyPair.getPrivate();
// Message to be signed
String message = "This is a secret message.";
// Create a Signature object
Signature signature = Signature.getInstance("SHA256withRSA");
// Initialize the signature with the private key
signature.initSign(privateKey);
// Update the data to be signed
signature.update(message.getBytes());
// Sign the message
byte[] digitalSignature = signature.sign();
System.out.println("Digital Signature: " + Base64.getEncoder().encodeToString(digitalSignature));
// Now verify the signature using the public key
signature.initVerify(publicKey);
signature.update(message.getBytes());
// Verify the signature
boolean isVerified = signature.verify(digitalSignature);
System.out.println("Signature verification: " + isVerified);
}
}
Output:
Digital Signature: s/yv0tX8MdhNmYyFpB6gCgB6K7rzFu1p2wvYek8w9A0FQel0UtgZLOgPU0UVkrOxZMh9S+Saqgd0w/sZ7dCKJf8NhR7HzKkHt23Rz74K5bdntgnjUtXYCg2hxJPd57fjGTeRvmAjsXktEBd0Xl52pn2d2gXjI93+GzhfS5ztl1hFg==
Signature verification: true
এখানে:
RSA Algorithm হল একটি শক্তিশালী এবং ব্যাপকভাবে ব্যবহৃত asymmetric encryption এলগোরিদম, যা পাবলিক কী এবং প্রাইভেট কী ব্যবহারের মাধ্যমে ডেটা এনক্রিপ্ট এবং ডিক্রিপ্ট করতে সহায়তা করে। এটি ডিজিটাল সিগনেচার, নিরাপদ ডেটা ট্রান্সফার, এবং অথেন্টিকেশন প্রক্রিয়ায় গুরুত্বপূর্ণ ভূমিকা পালন করে। RSA দিয়ে কী জেনারেশন, এনক্রিপশন, ডিক্রিপশন এবং ডিজিটাল সিগনেচার তৈরি এবং যাচাই করার মাধ্যমে আপনার সিস্টেমের নিরাপত্তা নিশ্চিত করা সম্ভব।
RSA (Rivest–Shamir–Adleman) হল একটি asymmetric encryption এলগোরিদম যা পাবলিক কী (public key) এবং প্রাইভেট কী (private key) ব্যবহার করে ডেটাকে এনক্রিপ্ট এবং ডিক্রিপ্ট করে। RSA এনক্রিপশন একটি খুব জনপ্রিয় এলগোরিদম এবং এটি মূলত ডেটা সুরক্ষা, ডিজিটাল সিগনেচার এবং নিরাপদ কমিউনিকেশন এর জন্য ব্যবহৃত হয়।
RSA Encryption-এ দুটি কী থাকে:
RSA এনক্রিপশন সাধারণত বড় ডেটার জন্য ব্যবহার করা হয়, তবে সিমেট্রিক এনক্রিপশন (যেমন AES) আরও দ্রুত, তাই সাধারণত বড় ডেটা এনক্রিপ্ট করতে সিমেট্রিক এনক্রিপশন ব্যবহার করা হয়, আর RSA দিয়ে কী এক্সচেঞ্জ করা হয়।
Java তে RSA এনক্রিপশন এবং ডিক্রিপশন করতে Java Cryptography API (JCA) ব্যবহার করা হয়। নিচে RSA এনক্রিপশন এবং ডিক্রিপশনের একটি উদাহরণ দেওয়া হল:
RSA কী জেনারেট করতে KeyPairGenerator ব্যবহার করা হয়।
এখানে আমরা RSA এনক্রিপশন এবং ডিক্রিপশন দুটি কাজ দেখাবো:
import java.security.*;
import javax.crypto.Cipher;
import java.util.Base64;
public class RSAExample {
// RSA Encryption
public static String encrypt(String data, PublicKey publicKey) throws Exception {
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
byte[] encryptedData = cipher.doFinal(data.getBytes());
return Base64.getEncoder().encodeToString(encryptedData); // Encode the encrypted data as a String
}
// RSA Decryption
public static String decrypt(String encryptedData, PrivateKey privateKey) throws Exception {
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.DECRYPT_MODE, privateKey);
byte[] decodedData = Base64.getDecoder().decode(encryptedData); // Decode the Base64 encoded data
byte[] decryptedData = cipher.doFinal(decodedData);
return new String(decryptedData);
}
public static void main(String[] args) throws Exception {
// Step 1: Generate RSA Key Pair
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
keyPairGenerator.initialize(2048); // 2048-bit key size
KeyPair keyPair = keyPairGenerator.generateKeyPair();
// Get public and private keys
PublicKey publicKey = keyPair.getPublic();
PrivateKey privateKey = keyPair.getPrivate();
// Original data to be encrypted
String data = "Hello, this is a test message!";
// Step 2: Encrypt the data using the public key
String encryptedData = encrypt(data, publicKey);
System.out.println("Encrypted data: " + encryptedData);
// Step 3: Decrypt the data using the private key
String decryptedData = decrypt(encryptedData, privateKey);
System.out.println("Decrypted data: " + decryptedData);
}
}
RSA
এলগোরিদম ব্যবহার করা হয়েছে।Encrypted data: NnA54gYZhP0RZlQjB2Ug5u9m56bx7bw2Kqlx+WzP88bdkOszF3jdC4bgqH8Yh7z8u2o+hMGY93fW4d3tM7YwC5eT6IzdtMfAKwwGBvjcgyZ3T6fw7lFyJ0JpvqY0HEp9a4xHM6gxd22bV9cVffwZalPY2fz1A2uWyj9Ap25gO3Yn7WyEHGigk8NoP0P6nkUyhV4CBL3lCx32Ekau1hQ==
Decrypted data: Hello, this is a test message!
এখানে:
"Hello, this is a test message!"
ছিল।Base64
এনকোডিং এর মাধ্যমে পাঠযোগ্য স্ট্রিং আকারে রূপান্তরিত করা হয়েছে।RSA এনক্রিপশন হল একটি শক্তিশালী asymmetric encryption প্রযুক্তি যা ডেটার গোপনীয়তা এবং অখণ্ডতা রক্ষা করতে ব্যবহৃত হয়। Java Cryptography API ব্যবহার করে RSA এনক্রিপশন এবং ডিক্রিপশন প্রক্রিয়া সহজেই বাস্তবায়ন করা যায়। এটি বিভিন্ন নিরাপত্তা প্রক্রিয়া যেমন ডিজিটাল সিগনেচার এবং নিরাপদ ডেটা ট্রান্সফারের জন্য অত্যন্ত উপকারী।
Asymmetric Encryption বা Public Key Cryptography হল একটি ক্রিপ্টোগ্রাফি পদ্ধতি যা দুটি কী ব্যবহার করে: একটি Public Key এবং একটি Private Key। এই পদ্ধতিতে Public Key দিয়ে ডেটা এনক্রিপ্ট করা হয় এবং শুধুমাত্র সংশ্লিষ্ট Private Key দিয়ে সেই ডেটা ডিক্রিপ্ট করা যায়। এটি সুরক্ষিত যোগাযোগ, ডেটা গোপনীয়তা, অথেন্টিকেশন, এবং ডেটার অখণ্ডতা নিশ্চিত করতে ব্যবহৃত হয়।
Java Cryptography API (JCAPI) ব্যবহার করে Asymmetric Encryption এর বিভিন্ন ব্যবহার ক্ষেত্রকে বাস্তবায়ন করা যেতে পারে।
এখানে Asymmetric Encryption এর কিছু ব্যবহার ক্ষেত্র আলোচনা করা হল:
Asymmetric Encryption এর অন্যতম প্রধান ব্যবহার ক্ষেত্র হল নিরাপদ যোগাযোগ। এই পদ্ধতিতে Public Key ব্যবহার করে মেসেজ এনক্রিপ্ট করা হয় এবং শুধুমাত্র Private Key দিয়ে মেসেজ ডিক্রিপ্ট করা সম্ভব হয়। এই ধরনের এনক্রিপশন ইন্টারনেট সিকিউরিটি নিশ্চিত করতে অত্যন্ত গুরুত্বপূর্ণ।
SSL/TLS প্রোটোকলটি ওয়েব সাইটে HTTPS এর মাধ্যমে নিরাপদ যোগাযোগ নিশ্চিত করতে Asymmetric Encryption ব্যবহার করে। এই প্রোটোকলে, public key সার্ভারের SSL certificate এ থাকে, এবং ক্লায়েন্ট সেই public key দিয়ে ডেটা এনক্রিপ্ট করে সার্ভারে পাঠায়। শুধুমাত্র সার্ভারের private key দিয়ে সেই ডেটা ডিক্রিপ্ট করা সম্ভব হয়।
SSL/TLS ব্যবহৃত হয় ওয়েব ব্রাউজার এবং সার্ভার এর মধ্যে সুরক্ষিত যোগাযোগের জন্য, যেমন online banking, email encryption, online shopping ইত্যাদি।
Digital Signatures ব্যবহার করা হয় একটি ডকুমেন্ট বা মেসেজের অখণ্ডতা এবং বৈধতা নিশ্চিত করতে। Private Key ব্যবহার করে একটি ডকুমেন্ট বা মেসেজে ডিজিটাল স্বাক্ষর (signature) করা হয় এবং Public Key দিয়ে সেই সাইন যাচাই করা যায়।
এটি বিশেষত ব্যবহার হয়:
Asymmetric Encryption ব্যবহার করে দুটি পক্ষ একে অপরের সাথে সুরক্ষিতভাবে একটি shared secret key বিনিময় করতে পারে, যা পরবর্তীতে symmetric encryption (যেমন AES) এর মাধ্যমে ডেটা এনক্রিপশন এবং ডিক্রিপশন করতে ব্যবহৃত হয়। এটি key exchange protocols-এর অংশ হিসেবে কাজ করে।
Diffie-Hellman একটি key exchange algorithm যা public key cryptography ব্যবহার করে দুটি পক্ষের মধ্যে একটি shared secret key তৈরি করতে সাহায্য করে। এই shared key পরে symmetric encryption এর মাধ্যমে ডেটা এনক্রিপ্ট এবং ডিক্রিপ্ট করার জন্য ব্যবহৃত হয়।
এই প্রক্রিয়া ব্যবহৃত হয়:
Digital Certificates হল ক্রিপ্টোগ্রাফি ব্যবহৃত একটি ডিজিটাল ফাইল যা একটি পাবলিক কী এবং তার মালিকের পরিচয় সংরক্ষণ করে। Asymmetric Encryption ব্যবহার করে digital certificates এর মাধ্যমে authentication নিশ্চিত করা হয়, যা ইন্টারনেট সিকিউরিটিতে অত্যন্ত গুরুত্বপূর্ণ।
PKI একটি নিরাপত্তা আর্কিটেকচার যা digital certificates এবং public key cryptography ব্যবহার করে ব্যবহাকারীদের অথেন্টিকেশন নিশ্চিত করে এবং সিকিউরড কমিউনিকেশন তৈরি করে।
PKI ব্যবহৃত হয়:
Blockchain এবং Cryptocurrencies যেমন Bitcoin, Ethereum ইত্যাদির সুরক্ষা নিশ্চিত করতে Asymmetric Encryption ব্যবহৃত হয়। Private key এবং Public key ব্যবহার করে ব্লকচেইন নেটওয়ার্কে ট্রান্সফার, লেনদেন এবং অথেন্টিকেশন সম্পন্ন করা হয়।
Asymmetric encryption এখানে লেনদেনের নিরাপত্তা এবং অথেন্টিকেশন নিশ্চিত করে, যাতে ফান্ডের অপব্যবহার বা হ্যাকিং প্রতিরোধ করা যায়।
Asymmetric encryption ব্যবহৃত হয় ফাইল এনক্রিপশন এবং নিরাপদ সংরক্ষণে, যেখানে Public Key দিয়ে ফাইল এনক্রিপ্ট করা হয় এবং Private Key দিয়ে ডিক্রিপ্ট করা হয়।
এটি ব্যবহৃত হয়:
ইমেইল সুরক্ষিত করতে Public Key এবং Private Key ব্যবহৃত হয়। এতে মেসেজ এনক্রিপ্ট করা হয় Public Key দিয়ে এবং শুধুমাত্র প্রাপ্তকারী Private Key দিয়ে ডিক্রিপ্ট করতে পারেন।
PGP একটি email encryption সিস্টেম যেখানে পাবলিক কী ব্যবহার করে ইমেইল এনক্রিপ্ট করা হয় এবং প্রাইভেট কী ব্যবহার করে তা ডিক্রিপ্ট করা হয়। এটি নিরাপদ এবং গোপনীয় যোগাযোগ নিশ্চিত করতে ব্যবহৃত হয়।
Asymmetric Encryption (Public Key Cryptography) একটি অত্যন্ত শক্তিশালী এবং নিরাপদ পদ্ধতি যা সুরক্ষিত যোগাযোগ, অথেন্টিকেশন, ডেটা গোপনীয়তা, ডিজিটাল সাইনিং এবং ডেটা এক্সচেঞ্জের জন্য ব্যবহৃত হয়। Java Cryptography API এর মাধ্যমে আপনি Public Key এবং Private Key ব্যবহার করে নিরাপদ যোগাযোগ এবং ডেটা এনক্রিপশন/ডিক্রিপশন, ডিজিটাল স্বাক্ষর, ব্লকচেইন সুরক্ষা এবং আরো অনেক সিকিউরিটি বৈশিষ্ট্য কার্যকর করতে পারেন।
এটি বিশেষভাবে ব্যবহৃত হয়:
Read more