2009-05-19 14 views
7

के साथ 128-बिट कुंजी जेनरेट करना क्या सूर्य के कीटोल प्रोग्राम का उपयोग करके एन्क्रिप्शन के लिए उपयुक्त 128-बिट कुंजी जोड़ी उत्पन्न करने का कोई तरीका है? ऐसा लगता है कि http://java.sun.com/javase/6/docs/technotes/guides/security/StandardNames.html#KeyPairGenerator में उपलब्ध एल्गोरिदम या तो समर्थित नहीं हैं या 512 बिट्स से कम कुंजी की अनुमति नहीं देते हैं।keytool

कुंजी जोड़ी का उपयोग एफएफ के साथ किया जाएगा। कोड स्निपेट:

Security.addProvider(new BouncyCastleProvider()); 

KeyStore keyStore = KeyStore.getInstance("PKCS12"); 

FileInputStream keyStoreSource = new FileInputStream("keystore"); 

try { 
    keyStore.load(keyStoreSource, "password".toCharArray()); 
} finally { 
    keyStoreSource.close(); 
} 

String alias = (String) keyStore.aliases().nextElement(); 
PrivateKey privateKey = (PrivateKey) keyStore.getKey(alias, "password".toCharArray()); 
X509Certificate certificate = (X509Certificate) keyStore.getCertificate(alias); 

CMSEnvelopedDataStreamGenerator generator = new CMSEnvelopedDataStreamGenerator(); 

generator.addKeyTransRecipient(certificate); 

OutputStream output2 = generator.open(output, CMSEnvelopedDataGenerator.AES128_CBC, BouncyCastleProvider.PROVIDER_NAME); 

try { 
    IOUtils.copy(input, output2); 
} finally { 
    output2.close(); 
    output.close(); 
} 

जहां उत्पादन कुछ OutputStream जहां एन्क्रिप्टेड डेटा सहेज लिया जाएगा और इनपुट कुछ InputStream जहां प्लेन टेक्स्ट डेटा को पढ़ने हो जाएगा है।

उत्तर

0

यह समझ में आता है कि 512-बिट कुंजी जोड़े से कम उत्पन्न नहीं किया जा सकता है। समान कुंजी सुरक्षा को बनाए रखने के लिए सार्वजनिक कुंजी क्रिप्टोग्राफी को सममित कुंजी क्रिप्टोग्राफी की तुलना में लंबी कुंजी की आवश्यकता होती है। सार्वजनिक कुंजी क्रिप्टोग्राफ़ी के लिए 128-बिट कुंजी जोड़ी की अनुशंसा नहीं की जाती है।

+0

मैं एक परीक्षण प्रमाणपत्र एईएस 128 के साथ उपयोग करने के लिए उत्पन्न करने के लिए देख रहा था निर्दिष्ट करने के लिए की जरूरत है। क्या मैं इसके बारे में गलत तरीके से जा रहा हूं? –

+1

क्या आप कुछ और विस्तार से समझा सकते हैं कि आप क्या हासिल करना चाहते हैं? –

+0

कोड स्निपेट के साथ अद्यतन प्रश्न जहां उत्पन्न मुख्य जोड़ी का उपयोग किया जाएगा। –

2

सार्वजनिक कुंजी क्रिप्टोग्राफ़ी के लिए प्रमाणपत्र का उपयोग किया जाता है और सममित ब्लॉक सिफर एईएस-128 के लिए एन्क्रिप्शन कुंजी नहीं होती है। इसके बजाए, सार्वजनिक कुंजी क्रिप्टोग्राफी का उपयोग केवल 128-बिट एईएस कुंजी को एन्क्रिप्ट या बातचीत करने के लिए किया जाता है और शेष बातचीत एईएस का उपयोग करती है।

128-बिट एईएस कुंजी प्रमाण पत्र नहीं है, यह क्रिप्टोग्राफिक रूप से मजबूत यादृच्छिक संख्या जनरेटर से केवल 128 बिट्स है या PBKDF2 जैसे हैशिंग एल्गोरिदम का उपयोग करके पासफ्रेज़ से व्युत्पन्न है। आप इन बिट्स को कैसे प्राप्त करेंगे, आपके आवेदन पर निर्भर होंगे। एसएसएल/टीएलएस को एक यादृच्छिक कुंजी पर बातचीत करनी चाहिए, लेकिन एक हार्ड डिस्क एन्क्रिप्शन प्रोग्राम पासफ्रेज से कुंजी प्राप्त करेगा।

+0

कोड स्निपेट के साथ अद्यतन प्रश्न जहां उत्पन्न मुख्य जोड़ी का उपयोग किया जाएगा। उम्मीद है कि, मैंने किसी भी भ्रम को मंजूरी दे दी है। लेकिन, हाँ, मैं एक क्रिप्टो शुरुआत कर रहा हूँ। : पी –

5

तुम सिर्फ अलग storetype

keytool -genseckey -alias check2 -keyalg AES -keysize 128 -storepass changeit -storetype JCEKS -keystore ks.jck

संबंधित मुद्दे

 संबंधित मुद्दे