जावा क्रिप्टोग्राफी - कुंजियों को पुनः प्राप्त करना
इस अध्याय में, हम सीखेंगे कि जावा क्रिप्टोग्राफी का उपयोग करके कीस्टोर से एक कुंजी कैसे प्राप्त करें।
कीस्टोर से एक कुंजी प्राप्त करने के लिए, नीचे दिए गए चरणों का पालन करें।
चरण 1: एक KeyStore ऑब्जेक्ट बनाएँ
getInstance() की विधि KeyStore की कक्षा java.security पैकेज कीस्टोर के प्रकार का प्रतिनिधित्व करने वाला एक स्ट्रिंग मान स्वीकार करता है और एक KeyStore वस्तु देता है।
नीचे दिखाए गए अनुसार इस विधि का उपयोग करके KeyStore वर्ग का एक ऑब्जेक्ट बनाएं।
//Creating the KeyStore object
KeyStore keyStore = KeyStore.getInstance("JCEKS");
चरण 2: KeyStore ऑब्जेक्ट लोड करें
load() KeyStore क्लास का तरीका स्वीकार करता है a 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);
चरण 7: KeyStore.SecretKeyEntry ऑब्जेक्ट बनाएँ
getEntry() KeyStore वर्ग की विधि एक उपनाम (स्ट्रिंग पैरामीटर) और मानदंड के रूप में ProtectionParameter वर्ग का एक ऑब्जेक्ट स्वीकार करती है KeyStoreEntry ऑब्जेक्ट तब आप इसे इसमें डाल सकते हैं KeyStore.SecretKeyEntry वस्तु।
आवश्यक कुंजी के लिए उपनाम पारित करके और पिछले चरणों में बनाए गए सुरक्षा पैरामीटर ऑब्जेक्ट के द्वारा KeyStore.SecretKeyEntry वर्ग की एक वस्तु बनाएं। getEntry() नीचे दिखाए अनुसार विधि।
//Creating the KeyStore.SecretKeyEntry object
KeyStore.SecretKeyEntry secretKeyEnt = (KeyStore.SecretKeyEntry)keyStore.getEntry("secretKeyAlias", protectionParam);
चरण 8: पुनःप्राप्त प्रविष्टि की मुख्य वस्तु बनाएं
getSecretKey() की विधि SecretKeyEntryक्लास एक सीक्रेटी ऑब्जेक्ट लौटाता है। इस विधि का उपयोग करके नीचे दिखाए गए अनुसार एक गुप्त वस्तु बनाएं।
//Creating SecretKey object
SecretKey mysecretKey = secretKeyEnt.getSecretKey();
System.out.println(mysecretKey);
उदाहरण
निम्नलिखित उदाहरण से पता चलता है कि कुंजी स्टोर से चाबियाँ कैसे प्राप्त करें। यहां, हम एक कीस्टोर में एक कुंजी स्टोर करते हैं, जो "कैसर्ट" फाइल (विंडोज़ 10 ऑपरेटिंग सिस्टम) में है, इसे पुनः प्राप्त करते हैं, और इसके कुछ गुणों को प्रदर्शित करते हैं जैसे कि कुंजी को उत्पन्न करने के लिए उपयोग किया जाने वाला एल्गोरिथ्म और, का प्रारूप पुनः प्राप्त की।
import java.io.FileInputStream;
import java.security.KeyStore;
import java.security.KeyStore.ProtectionParameter;
import java.security.KeyStore.SecretKeyEntry;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
public class RetrievingFromKeyStore{
public static void main(String args[]) throws Exception{
//Creating the KeyStore object
KeyStore keyStore = KeyStore.getInstance("JCEKS");
//Loading the the KeyStore object
char[] password = "changeit".toCharArray();
java.io.FileInputStream fis = new FileInputStream(
"C:/Program Files/Java/jre1.8.0_101/lib/security/cacerts");
keyStore.load(fis, password);
//Creating the KeyStore.ProtectionParameter object
ProtectionParameter protectionParam = new KeyStore.PasswordProtection(password);
//Creating SecretKey object
SecretKey mySecretKey = new SecretKeySpec("myPassword".getBytes(), "DSA");
//Creating SecretKeyEntry object
SecretKeyEntry secretKeyEntry = new 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);
//Creating the KeyStore.SecretKeyEntry object
SecretKeyEntry secretKeyEnt = (SecretKeyEntry)keyStore.getEntry("secretKeyAlias", protectionParam);
//Creating SecretKey object
SecretKey mysecretKey = secretKeyEnt.getSecretKey();
System.out.println("Algorithm used to generate key : "+mysecretKey.getAlgorithm());
System.out.println("Format used for the key: "+mysecretKey.getFormat());
}
}
उत्पादन
उपरोक्त कार्यक्रम निम्नलिखित आउटपुट उत्पन्न करता है -
Algorithm used to generate key: DSA
Format of the key: RAW