2012-04-08 9 views
11

मैंने एईएस/सीबीसी/पीकेसीएस 5 पैडिंग के लिए एक कस्टम सुरक्षा प्रदाता लिखा था। यह ठीक काम करता है।मैं अपने सुरक्षा प्रदाता का उपयोग करने के लिए जावा कैसे प्राप्त करूं?

जावा को उपरोक्त एल्गोरिदम के लिए वैध प्रदाता के रूप में पहचानने के लिए Provider में जोड़ने के लिए मुझे किन सेटिंग्स की आवश्यकता है? मेरे पास पहले से ही

public class FooBarProvider extends Provider { 
    public FooBarProvider() { 
    super("FooBar", 1.0, "Provider for AES."); 
    put("Cipher.AES", "foo.bar.AESCipher"); 
    } 
} 

जहां बाद का तर्क वास्तविक CipherSpi है जो काम करता है। मैं इस तथ्य को कहां पंजीकृत करूं कि यह सीबीसी और पीकेसीएस 5 पैडिंग का समर्थन करता है? वर्तमान में एक प्रासंगिक Cipher के लिए पूछ एक उदाहरण वापस नहीं करता है मेरी कक्षा का:

कम:

Security.insertProviderAt(new FooBarProvider(), 1); 
Cipher cip = Cipher.getInstance("AES/CBC/PKCS5Padding"); 
System.out.println(cip.getProvider()); //prints "SunJCE version 1.7" 

उत्तर

7

कोड लेखन प्रक्रिया के सबसे सरल हिस्सा है। आपने पहले ही घोषित कर दिया है कि आपकी कक्षाएं एईएस के लिए एक सिफर कार्यान्वयन प्रदान करती हैं। यह पंक्ति:

put("Cipher.AES", "foo.bar.AESCipher"); 

आपको कार्य को पूरा करने के लिए बहुत कुछ है। यह भी ध्यान रखें कि आपके कार्यान्वयन को स्वचालित रूप से मोड और पैडिंग के सभी संयोजनों के लिए बुलाया जाएगा, क्योंकि आपने एल्गोरिदम स्तर पर अपना साइफर कार्यान्वयन पंजीकृत किया है।

यह कहकर, कोड लिखना आसान हिस्सा था। आप एक सिफर बना रहे हैं, इसलिए इसे प्रदाता के रूप में स्थापित और कॉन्फ़िगर करने से पहले आपको अपने JAR पर हस्ताक्षर करने की आवश्यकता होगी। क्योंकि प्रक्रिया कुछ हद तक शामिल है, मैं इसे यहां कॉपी नहीं करूंगा, बल्कि मैं आपको Oracle Guide on How to implement a Provider पर भेजूंगा। यह इस कार्य के लिए एक उत्कृष्ट स्रोत है।

यदि आप मार्गदर्शिका का पालन करते हैं और अभी भी समस्याएं हैं, तो आपको अपने स्थापित जेडीके के लिए उपयुक्त JCE Unlimited Strength Policy डाउनलोड और स्थापित करने की आवश्यकता हो सकती है।

+0

तो मैं इसे अपने कार्यान्वयन का परीक्षण करने के लिए भी इंस्टॉल नहीं कर सकता? –

2

जावा क्रिप्टो प्रलेखन एक Provider वर्ग के पंजीकरण के लिए तंत्र का वर्णन करता है संस्करण है:

  1. क्लासपाथ पर या जावा स्थापना की एक्सटेंशन निर्देशिका में प्रदाता JAR रखें।
  2. प्रदाता रजिस्टर:
    • संपादित java.security कॉन्फ़िग फ़ाइल (जावा स्थापना में), या रनटाइम पर
    • , Security.addProvider या Security.insertProviderAt कहते हैं।
+0

मेरे पास वह हिस्सा है (उपरोक्त 'insertProviderAt' कॉल) पर ध्यान दें, लेकिन मेरे सिफर सीबीसी और पीकेसीएस 5 पैडिंग का समर्थन करने के लिए वाक्यविन्यास क्या है? –

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

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