2014-10-30 5 views
5

में गुप्त कुंजी का प्रबंधन कैसे करें मैं जावा क्रिप्टोग्राफी एप्लिकेशन विकसित कर रहा हूं। मैं एईएस या डीईएस जैसे सममित एल्गोरिदम का उपयोग करके एक फ़ाइल एन्क्रिप्ट करना चाहता हूं और फाइल के भविष्य के डिक्रिप्शन के लिए डेटाबेस में गुप्तकी स्टोर करना चाहता हूं। मैं सोच रहा हूं कि डेटाबेस तालिका में SecretKey ऑब्जेक्ट को कैसे स्टोर किया जाए। क्या मुझे मुख्य वस्तु को क्रमबद्ध करना चाहिए? (secretKey serilaizable है।) डेटाबेस में क्रमबद्ध वस्तु को कैसे स्टोर करें? क्या MYSQL डेटा प्रकार का उपयोग करना चाहिए?जावा

एक और समाधान कच्चे बाइट [] कुंजी प्राप्त करना है, इसे बेस 64 में परिवर्तित करें और डेटाबेस में स्टोर करें। मैं बाद में मूल रॉ कुंजी के लिए बेस 64 कुंजी को डीकोड कर सकता हूं, लेकिन समस्या कच्ची कुंजी को SecretKey ऑब्जेक्ट में परिवर्तित करने में है।

किसी भी मदद की अत्यधिक सराहना की जाएगी।

+1

आप 'भंडारण वस्तुओं और वस्तु के लिए blob' उपयोग करने के लिए डीबी में भंडारण से पहले धारावाहिक किया जाना चाहिए की जरूरत है। अधिक जानकारी के लिए इसे देखें। http://stackoverflow.com/questions/2747203/want-to-store-object-in-mysql-डेटा – Ali786

+0

गुप्त कुंजी –

+0

का डेटाटाइप क्या होगा गुप्त कुंजी संग्रहीत करने के लिए स्ट्रिंग ऑब्जेक्ट का उपयोग करें। – Ali786

उत्तर

3

जावा में एक वर्ग है - 'कुंजी जेनरेटर' - यह कक्षा गुप्त (सममित) कुंजी जनरेटर की कार्यक्षमता प्रदान करती है।

आप मूल रूप से इस वर्ग के गुप्त कुंजी पीढ़ी के लिए तरीके निम्न में से एक में, उपयोग करने की आवश्यकता: इस उदाहरण में

SecretKey aesKey = KeyGenerator.getInstance("AES").generateKey(); 

इस एल्गोरिथ्म जो पैरामीटर के रूप में पारित हो जाता है के लिए डिफ़ॉल्ट लंबाई के साथ गुप्त कुंजी उत्पन्न जाएगा, यह 128 बिट्स (एईएस के लिए डिफ़ॉल्ट) के लिए गुप्त कुंजी उत्पन्न करेगा।

या निम्न फ़ंक्शन का उपयोग करें:

public static SecretKey generateSecretKey() 
{ 
    KeyGenerator keyGener = KeyGenerator.getInstance("AES"); 
    keyGener.init(256) // here you can pass any valid length 
    return keyGener.generateKey(); 
} 

आप चरित्र सरणी, बाइट सरणी या स्ट्रिंग के लिए इन जनरेट की गई गुप्त कुंजी परिवर्तित कर सकते हैं और फिर इन किसी भी डेटाबेस के साथ रखा जा सकता है, उपयोग करें:

char[] key = encodeHex(aesKey.getEncoded()); 

या

byte[] key = aesKey.getEncoded(); 

अधिक विस्तार के लिए Keygenerator वर्ग देखें: http://docs.oracle.com/javase/7/docs/api/javax/crypto/KeyGenerator.html

मदद करने में खुशी।

धन्यवाद, अंकित

+0

हाय लोकेश, अगर उत्तर उपयोगी है तो इसे ऊपर देने के लिए ऊपर तीर का उपयोग करें, अन्यथा यदि आपकी समस्या अभी तक हल नहीं हुई है, तो मुझे इस मुद्दे को बताएं। – LearnAndHelp