जावा क्रिप्टोग्राफी - हस्ताक्षर को सत्यापित करना

आप जावा का उपयोग करके डिजिटल हस्ताक्षर बना सकते हैं और नीचे दिए गए चरणों का पालन करके इसे सत्यापित कर सकते हैं।

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

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

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

//Creating KeyPair generator object
KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("DSA");

चरण 2: KeyPairGenerator ऑब्जेक्ट को प्रारंभ करें

KeyPairGenerator क्लास नाम की एक विधि प्रदान करता है initialize()तरीका। इस विधि का उपयोग कुंजी जोड़ी जनरेटर को आरंभीकृत करने के लिए किया जाता है। यह विधि मुख्य आकार का प्रतिनिधित्व करने वाले पूर्णांक मान को स्वीकार करती है।

KeyPairGenerator ऑब्जेक्ट को चरण का उपयोग करके पिछले चरण में बनाया गया प्रारंभ करें initialize() नीचे दिखाए अनुसार विधि।

//Initializing the KeyPairGenerator
keyPairGen.initialize(2048);

चरण 3: KeyPairGenerator उत्पन्न करें

आप उत्पन्न कर सकते हैं KeyPair का उपयोग करते हुए generateKeyPair()तरीका। नीचे दिखाए गए अनुसार इस विधि का उपयोग करके कीपर उत्पन्न करें।

//Generate the pair of keys
KeyPair pair = keyPairGen.generateKeyPair();

चरण 4: जोड़ी से निजी कुंजी प्राप्त करें

का उपयोग कर उत्पन्न KeyPair ऑब्जेक्ट से आप निजी कुंजी प्राप्त कर सकते हैं getPrivate() तरीका।

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

//Getting the private key from the key pair
PrivateKey privKey = pair.getPrivate();

चरण 5: एक हस्ताक्षर वस्तु बनाएं

getInstance() की विधि Signature वर्ग आवश्यक हस्ताक्षर एल्गोरिथ्म का प्रतिनिधित्व करने वाला एक स्ट्रिंग पैरामीटर स्वीकार करता है और संबंधित हस्ताक्षर वस्तु लौटाता है।

का उपयोग करके हस्ताक्षर वर्ग की एक वस्तु बनाएँ getInstance() तरीका।

//Creating a Signature object
Signature sign = Signature.getInstance("SHA256withDSA");

चरण 6: हस्ताक्षर वस्तु को प्रारंभ करें

initSign() हस्ताक्षर कक्षा की विधि एक स्वीकार करता है PrivateKey ऑब्जेक्ट और वर्तमान हस्ताक्षर ऑब्जेक्ट को इनिशियलाइज़ करता है।

का उपयोग करके पिछले चरण में बनाई गई हस्ताक्षर वस्तु को आरम्भिक करें initSign() नीचे दिखाए अनुसार विधि।

//Initialize the signature
sign.initSign(privKey);

चरण 7: हस्ताक्षर ऑब्जेक्ट में डेटा जोड़ें

update() हस्ताक्षर कक्षा की विधि डेटा को दर्शाती या सत्यापित की जाने वाली बाइट सरणी को स्वीकार करती है और दिए गए डेटा के साथ वर्तमान ऑब्जेक्ट को अपडेट करती है।

हस्ताक्षर किए जाने वाले डेटा को पास करके आरंभिक हस्ताक्षरित वस्तु को अपडेट करें update() नीचे के रूप में बाइट सरणी के रूप में विधि।

byte[] bytes = "Hello how are you".getBytes();      

//Adding data to the signature
sign.update(bytes);

चरण 8: हस्ताक्षर की गणना करें

sign() की विधि Signature वर्ग अद्यतन किए गए डेटा के हस्ताक्षर बाइट्स लौटाता है।

नीचे दिखाए गए अनुसार साइन () विधि का उपयोग करके हस्ताक्षर की गणना करें।

//Calculating the signature
byte[] signature = sign.sign();

चरण 9: सत्यापन के लिए हस्ताक्षर वस्तु को आरम्भ करें

किसी सिग्नेचर ऑब्जेक्ट को सत्यापित करने के लिए आपको पहले इसका इस्तेमाल करके इसे इनिशियलाइज़ करना होगा initVerify() विधि यह विधि स्वीकार करती है a PublicKey वस्तु।

इसलिए, सत्यापन का उपयोग करने के लिए हस्ताक्षर ऑब्जेक्ट को इनिशियलाइज़ करें initVerify() नीचे दिखाए अनुसार विधि।

//Initializing the signature
sign.initVerify(pair.getPublic());

चरण 10: सत्यापित किए जाने वाले डेटा को अपडेट करें

डेटा के साथ आरंभीकृत (सत्यापन के लिए) अद्यतन करें अद्यतन विधि का उपयोग करके डेटा को सत्यापित किया जाना चाहिए जैसा कि नीचे दिखाया गया है।

//Update the data to be verified
sign.update(bytes);

चरण 11: हस्ताक्षर सत्यापित करें

verify()हस्ताक्षर कक्षा की विधि किसी अन्य हस्ताक्षर वस्तु को स्वीकार करती है और इसे वर्तमान के साथ सत्यापित करती है। यदि कोई मैच होता है, तो यह सही है और यह गलत है।

इस विधि का उपयोग करके हस्ताक्षर सत्यापित करें जैसा कि नीचे दिखाया गया है।

//Verify the signature
boolean bool = sign.verify(signature);

उदाहरण

निम्नलिखित जावा प्रोग्राम उपयोगकर्ता के एक संदेश को स्वीकार करता है, दिए गए संदेश के लिए एक डिजिटल हस्ताक्षर बनाता है और इसे सत्यापित करता है।

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

import java.util.Scanner;

public class SignatureVerification {
   public static void main(String args[]) throws Exception{
      //Creating KeyPair generator object
      KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("DSA");
	      
      //Initializing the key pair generator
      keyPairGen.initialize(2048);
	      
      //Generate the pair of keys
      KeyPair pair = keyPairGen.generateKeyPair();
      
      //Getting the privatekey from the key pair
      PrivateKey privKey = pair.getPrivate();

      //Creating a Signature object
      Signature sign = Signature.getInstance("SHA256withDSA");

      //Initializing the signature
      sign.initSign(privKey);
      byte[] bytes = "Hello how are you".getBytes();
      
      //Adding data to the signature
      sign.update(bytes);
      
      //Calculating the signature
      byte[] signature = sign.sign();      
      
      //Initializing the signature
      sign.initVerify(pair.getPublic());
      sign.update(bytes);
      
      //Verifying the signature
      boolean bool = sign.verify(signature);
      
      if(bool) {
         System.out.println("Signature verified");   
      } else {
         System.out.println("Signature failed");
      }
   }
}

उत्पादन

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

Signature verified