जावा क्रिप्टोग्राफी - भंडारण कुंजी

उपयोग की गई / सृजित कीज और सर्टिफिकेट एक डाटा बेस में संग्रहीत किया जाता है जिसे कीस्टोर कहा जाता है। डिफ़ॉल्ट रूप से यह डेटाबेस नाम की एक फ़ाइल में संग्रहीत किया जाता है.keystore

आप इस डेटाबेस की सामग्री का उपयोग कर सकते हैं KeyStore की कक्षा java.securityपैकेज। यह तीन अलग-अलग प्रविष्टियों का प्रबंधन करता है, PrivateKeyEntry, SecretKeyEntry, TrustedCertificateEntry।

  • PrivateKeyEntry
  • SecretKeyEntry
  • TrustedCertificateEntry

कीस्टोर में एक कुंजी जमा करना

इस खंड में, हम सीखेंगे कि कीस्टोर में कुंजी कैसे स्टोर करें। कीस्टोर में एक कुंजी स्टोर करने के लिए, नीचे दिए गए चरणों का पालन करें।

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

getInstance() की विधि KeyStore की कक्षा java.security पैकेज कीस्टोर के प्रकार का प्रतिनिधित्व करने वाला एक स्ट्रिंग मान स्वीकार करता है और एक KeyStore वस्तु देता है।

का उपयोग कर KeyStore वर्ग का एक ऑब्जेक्ट बनाएँ getInstance() नीचे दिखाए अनुसार विधि।

//Creating the KeyStore object
KeyStore keyStore = KeyStore.getInstance("JCEKS");

चरण 2: KeyStore ऑब्जेक्ट लोड करें

load() KeyStore क्लास का तरीका एक FileInputStream ऑब्जेक्ट को स्वीकार करता है जो कीस्टोर फाइल का प्रतिनिधित्व करता है और एक स्ट्रिंग पैरामीटर KeyStore के पासवर्ड को निर्दिष्ट करता है।

सामान्य तौर पर, KeyStore नाम की फ़ाइल में संग्रहीत किया जाता है cacertsस्थान में C:/Program Files/Java/jre1.8.0_101/lib/security/ और इसका डिफ़ॉल्ट पासवर्ड है changeit, का उपयोग कर इसे लोड करें load() नीचे दिखाए अनुसार विधि।

//Loading the KeyStore object
char[] password = "changeit".toCharArray();
String path = "C:/Program Files/Java/jre1.8.0_101/lib/security/cacerts";
java.io.FileInputStream fis = new FileInputStream(path);
keyStore.load(fis, password);

चरण 3: KeyStore.ProtectionParameter ऑब्जेक्ट बनाएँ

नीचे दिखाए अनुसार KeyStore.ProtectionParameter को झटपट बंद करें।

//Creating the KeyStore.ProtectionParameter object
KeyStore.ProtectionParameter protectionParam = new KeyStore.PasswordProtection(password);

चरण 4: एक गुप्त वस्तु बनाएँ

बनाएँ SecretKey (इंटरफ़ेस) ऑब्जेक्ट को अपनी उप-क्लास को तत्काल करने से SecretKeySpec। तत्काल करते समय आपको पासवर्ड और एल्गोरिथ्म को इसके निर्माता को पैरामीटर के रूप में पास करना होगा जैसा कि नीचे दिखाया गया है।

//Creating SecretKey object
SecretKey mySecretKey = new SecretKeySpec(new String(keyPassword).getBytes(), "DSA");

चरण 5: एक सीक्रेटकेन्ट्री ऑब्जेक्ट बनाएं

की एक वस्तु बनाएँ SecretKeyEntry पास करके कक्षा SecretKey उपरोक्त चरण में बनाई गई वस्तु जैसा कि नीचे दिखाया गया है।

//Creating SecretKeyEntry object
KeyStore.SecretKeyEntry secretKeyEntry = new KeyStore.SecretKeyEntry(mySecretKey);

चरण 6: KeyStore के लिए एक प्रविष्टि सेट करें

setEntry() की विधि KeyStore वर्ग एक स्ट्रिंग पैरामीटर को स्वीकार करता है जो किस्टोर एंट्री उर्फ, ए का प्रतिनिधित्व करता है SecretKeyEntry ऑब्जेक्ट, एक प्रोटेक्शनपार्ट ऑब्जेक्ट और, दिए गए उपनाम के तहत प्रविष्टि को संग्रहीत करता है।

का उपयोग कर कीस्टोर में प्रवेश सेट करें setEntry() नीचे दिखाए अनुसार विधि।

//Set the entry to the keystore
keyStore.setEntry("secretKeyAlias", secretKeyEntry, protectionParam);

Example

निम्न उदाहरण "कैसर्ट" फ़ाइल (विंडोज़ 10 ऑपरेटिंग सिस्टम) में मौजूद कीस्टोर में कुंजियों को संग्रहीत करता है।

import java.io.FileInputStream;
import java.security.KeyStore;

import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;

public class StoringIntoKeyStore{
   public static void main(String args[]) throws Exception {
      //Creating the KeyStore object
      KeyStore keyStore = KeyStore.getInstance("JCEKS");

      //Loading the KeyStore object
      char[] password = "changeit".toCharArray();
      String path = "C:/Program Files/Java/jre1.8.0_101/lib/security/cacerts";
      java.io.FileInputStream fis = new FileInputStream(path);
      keyStore.load(fis, password);
      
      //Creating the KeyStore.ProtectionParameter object
      KeyStore.ProtectionParameter protectionParam = new KeyStore.PasswordProtection(password);

      //Creating SecretKey object
      SecretKey mySecretKey = new SecretKeySpec("myPassword".getBytes(), "DSA");
      
      //Creating SecretKeyEntry object
      KeyStore.SecretKeyEntry secretKeyEntry = new KeyStore.SecretKeyEntry(mySecretKey);
      keyStore.setEntry("secretKeyAlias", secretKeyEntry, protectionParam);

      //Storing the KeyStore object
      java.io.FileOutputStream fos = null;
      fos = new java.io.FileOutputStream("newKeyStoreName");
      keyStore.store(fos, password);
      System.out.println("data stored");
   }
}

Output

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

System.out.println("data stored");