2011-12-12 20 views
9

से आरएसए सार्वजनिक कुंजी कैसे बनाएं मेरे पास आरएसए पब्लिक की बाइट सरणी है। मैं इंटरनेट कि मैं इस कोड का उपयोग करके इसके बारे में कोई वास्तविक PublicKey वस्तु बना सकते हैं पर पाया:जावा: स्ट्रिंग

PublicKey publicKey = 
    KeyFactory.getInstance("RSA").generatePublic(new X509EncodedKeySpec(bytes)); 

लेकिन हर बार जब मैं इस कोड को चलाने के लिए, मुझे लगता है कि कुंजी का उपयोग कर एन्क्रिप्टेड डाटा के लिए एक और परिणाम हो रही है। मुझे यकीन है कि जिस डेटा को मैं एन्क्रिप्ट करना चाहता हूं वह हमेशा समान होता है, इसलिए बाइट सरणी कुंजी का प्रतिनिधित्व करता है।

क्या यह सामान्य है?

byte[] keyBytes = Base64.decodeBase64(rsa_1024_public_key); 
     // rsa_1024_public key is a constant String 

Cipher c = Cipher.getInstance("RSA"); 

PublicKey publicKey = 
    KeyFactory.getInstance("RSA").generatePublic(new X509EncodedKeySpec(keyBytes)); 

c.init(Cipher.ENCRYPT_MODE, publicKey); 

return c.doFinal(password.getBytes()); 

यह शायद असममित एन्क्रिप्शन एल्गोरिथ्म का एक हिस्सा है:

यहाँ मेरी कोड हमेशा एक और उत्पादन उत्पादन किया जाता है?

धन्यवाद।

+0

आरएसए गैर-निर्धारक है। – SLaks

+0

@Slaks: क्या आप इसे उत्तर के रूप में पोस्ट करना चाहते हैं? यह सही है: डी मैं 35 प्रतिनिधि अंक दूंगा। –

+0

दरअसल, 15; मैंने बहुत पहले प्रतिनिधि सीमा को मारा। :) – SLaks

उत्तर

7

आरएसए गैर-निर्धारक है।

आप गैर-यादृच्छिक पैडिंग मोड का चयन करके इसे निर्धारित कर सकते हैं; हालांकि, यह सुरक्षित नहीं होगा।

+0

मैं अगले सप्ताह ओके दे दूंगा? –

+0

परेशान मत करो; मैं आम तौर पर हर सप्ताह के दिन सीमा सीमा मारा। – SLaks