जावा क्रिप्टोग्राफी - एक मैक बनाना

मैक (Message Authentication Code) एल्गोरिथ्म संदेश प्रमाणीकरण प्रदान करने के लिए एक सममित कुंजी क्रिप्टोग्राफ़िक तकनीक है। मैक प्रक्रिया की स्थापना के लिए, प्रेषक और रिसीवर एक सममित कुंजी K साझा करते हैं।

अनिवार्य रूप से, एक मैक एक एन्क्रिप्टेड चेकसम है जो अंतर्निहित संदेश पर उत्पन्न होता है जो संदेश प्रमाणीकरण सुनिश्चित करने के लिए एक संदेश के साथ भेजा जाता है।

प्रमाणीकरण के लिए मैक का उपयोग करने की प्रक्रिया को निम्न चित्रण में दर्शाया गया है -

जावा में Mac की कक्षा javax.cryptoपैकेज संदेश प्रमाणीकरण कोड की कार्यक्षमता प्रदान करता है। इस वर्ग का उपयोग करके संदेश प्रमाणीकरण कोड बनाने के लिए नीचे दिए गए चरणों का पालन करें।

चरण 1: एक KeyGenerator ऑब्जेक्ट बनाएँ

KeyGenerator वर्ग प्रदान करता है getInstance() वह विधि जो एक स्ट्रिंग चर को स्वीकार करने के लिए आवश्यक कुंजी-जनरेटिंग एल्गोरिथ्म का प्रतिनिधित्व करती है और वापस आती है KeyGenerator वह वस्तु जो गुप्त कुंजी उत्पन्न करती है।

सृजन करना KeyGenerator का उपयोग कर वस्तु getInstance() नीचे दिखाए अनुसार विधि।

//Creating a KeyGenerator object
KeyGenerator keyGen = KeyGenerator.getInstance("DES");

चरण 2: सिक्योर रैंडम ऑब्जेक्ट बनाएं

SecureRandom की कक्षा java.Securityपैकेज एक मजबूत यादृच्छिक संख्या जनरेटर प्रदान करता है जिसका उपयोग जावा में यादृच्छिक संख्या उत्पन्न करने के लिए किया जाता है। नीचे दिखाए अनुसार इस वर्ग को त्वरित करें।

//Creating a SecureRandom object
SecureRandom secRandom = new SecureRandom();

चरण 3: प्रारंभ करें KeyGenerator

KeyGenerator क्लास नाम की एक विधि प्रदान करता है init() इस विधि को स्वीकार करता है SecureRandom ऑब्जेक्ट और वर्तमान को इनिशियलाइज़ करता है KeyGenerator

इस विधि का उपयोग करके पिछले चरण में बनाए गए KeyGenerator ऑब्जेक्ट को प्रारंभ करें।

//Initializing the KeyGenerator
keyGen.init(secRandom);

चरण 4: कुंजी उत्पन्न करें

का उपयोग कर उत्पन्न करें generateKey() की विधि KeyGenerator नीचे दिखाया गया है।

//Creating/Generating a key
Key key = keyGen.generateKey();

चरण 5: मैक ऑब्जेक्ट को इनिशियलाइज़ करें

init() मैक क्लास की विधि एक मुख्य ऑब्जेक्ट को स्वीकार करती है और दिए गए कुंजी का उपयोग करके वर्तमान मैक ऑब्जेक्ट को इनिशियलाइज़ करती है।

//Initializing the Mac object
mac.init(key);

चरण 6: मैक ऑपरेशन समाप्त करें

doFinal()मैक ऑपरेशन को खत्म करने के लिए मैक क्लास की विधि का उपयोग किया जाता है। इस विधि के लिए बाइट सरणी के रूप में आवश्यक डेटा पास करें और नीचे दिखाए अनुसार ऑपरेशन को खत्म करें।

//Computing the Mac
String msg = new String("Hi how are you");
byte[] bytes = msg.getBytes();
byte[] macResult = mac.doFinal(bytes);

उदाहरण

निम्न उदाहरण जेसीए का उपयोग करते हुए संदेश प्रमाणीकरण कोड (मैक) की पीढ़ी को प्रदर्शित करता है। यहां, हम एक सरल संदेश लेते हैं "हाय आप कैसे हैं" और, उस संदेश के लिए एक मैक उत्पन्न करते हैं।

import java.security.Key;
import java.security.SecureRandom;

import javax.crypto.KeyGenerator;
import javax.crypto.Mac;

public class MacSample {
   public static void main(String args[]) throws Exception{
      //Creating a KeyGenerator object
      KeyGenerator keyGen = KeyGenerator.getInstance("DES");

      //Creating a SecureRandom object
      SecureRandom secRandom = new SecureRandom();

      //Initializing the KeyGenerator
      keyGen.init(secRandom);

      //Creating/Generating a key
      Key key = keyGen.generateKey();	 

      //Creating a Mac object
      Mac mac = Mac.getInstance("HmacSHA256");

      //Initializing the Mac object
      mac.init(key);

      //Computing the Mac
      String msg = new String("Hi how are you");
      byte[] bytes = msg.getBytes();      
      byte[] macResult = mac.doFinal(bytes);

      System.out.println("Mac result:");
      System.out.println(new String(macResult));     
   }
}

उत्पादन

उपरोक्त कार्यक्रम निम्नलिखित आउटपुट उत्पन्न करेगा -

Mac result:
HÖ„^ǃÎ_Utbh…?š_üzØSSÜh_ž_œa0ŽV?