आप SecretKey
एक बाइट सरणी ( byte[]
) में कनवर्ट कर सकते हैं , फिर बेस 64 एनकोड करता है कि ए String
। वापस a में कनवर्ट करने के लिए SecretKey
, Base64 स्ट्रिंग को डीकोड करता है और इसे SecretKeySpec
अपने मूल के पुनर्निर्माण के लिए उपयोग करता है SecretKey
।
जावा 8 के लिए
स्ट्रिंग के लिए गुप्त:
// create new key
SecretKey secretKey = KeyGenerator.getInstance("AES").generateKey();
// get base64 encoded version of the key
String encodedKey = Base64.getEncoder().encodeToString(secretKey.getEncoded());
सीक्रेट के लिए स्ट्रिंग:
// decode the base64 encoded string
byte[] decodedKey = Base64.getDecoder().decode(encodedKey);
// rebuild key using SecretKeySpec
SecretKey originalKey = new SecretKeySpec(decodedKey, 0, decodedKey.length, "AES");
जावा 7 और उससे पहले (Android सहित):
नोट I: आप बेस 64 एन्कोडिंग / डिकोडिंग भाग को छोड़ सकते हैं और सिर्फ byte[]
SQLite में स्टोर कर सकते हैं । यह कहा, Base64 एन्कोडिंग / डिकोडिंग प्रदर्शन एक महंगा ऑपरेशन नहीं है और आप बिना किसी समस्या के लगभग किसी भी DB में स्ट्रिंग्स को स्टोर कर सकते हैं।
नोट II: पहले के जावा संस्करणों में किसी एक java.lang
या java.util
पैकेज में Base64 शामिल नहीं है। हालांकि Apache Commons Codec , Bouncy Castle या Guava से कोडेक्स का उपयोग करना संभव है ।
स्ट्रिंग के लिए गुप्त:
// CREATE NEW KEY
// GET ENCODED VERSION OF KEY (THIS CAN BE STORED IN A DB)
SecretKey secretKey;
String stringKey;
try {secretKey = KeyGenerator.getInstance("AES").generateKey();}
catch (NoSuchAlgorithmException e) {/* LOG YOUR EXCEPTION */}
if (secretKey != null) {stringKey = Base64.encodeToString(secretKey.getEncoded(), Base64.DEFAULT)}
सीक्रेट के लिए स्ट्रिंग:
// DECODE YOUR BASE64 STRING
// REBUILD KEY USING SecretKeySpec
byte[] encodedKey = Base64.decode(stringKey, Base64.DEFAULT);
SecretKey originalKey = new SecretKeySpec(encodedKey, 0, encodedKey.length, "AES");
String
जावा में उदाहरणों को नष्ट करने के लिए कोई स्पष्ट तरीका नहीं है, जबकि प्रमुख वस्तुओं और बाइट सरणियों को साफ किया जा सकता है। इसका मतलब यह है कि चाबियाँ लंबे समय तक मेमोरी के भीतर उपलब्ध रह सकती हैं। पासवर्ड (संरक्षित पासवर्ड) का उपयोग करनाKeyStore
, अधिमानतः रनटाइम सिस्टम / ओएस या यहां तक कि हार्डवेयर द्वारा समर्थित होना चाहिए।