का समर्थन करेंगे मुद्दे के एक बहुत ही व्यापक व्याख्या यह है कि PKCS # 5 और PKCS # 7 क्रिप्टोग्राफिक मानकों का पाठ भी शामिल है के लिए, कृपया here देखें।
पीकेसीएस # 5 पैडिंग का मतलब है 1 से 8 बाइट पैडिंग। पैडिंग बाइट्स में स्वयं बाइट के रूप में एन्कोड किए गए पैडिंग बाइट्स की मात्रा होती है। पीकेसीएस # 5 पैडिंग डीईएस के लिए निर्दिष्ट किया गया था, लेकिन यह 8 बाइट्स के ब्लॉक आकार वाले किसी भी ब्लॉक सिफर के लिए उपयुक्त होगा।
अब डीईएस विनिर्देशों और यहां तक कि पासवर्ड आधारित एन्क्रिप्शन के लिए पीकेसीएस # 5 विनिर्देश और जावा काफी लंबे समय तक। 2002 में एईएस को केवल मानकीकृत किया गया था, जावा के बाद और यहां तक कि जावा 2 भी पेश किया गया था। एईएस ने अपनी उपस्थिति बनाने से पहले (ट्रिपल) डीईएस और पीकेसीएस # 5 पैडिंग जावा में एकीकृत किया गया था।
जब जावा - या अधिक सटीक, सूर्य जेसीई प्रदाता - एईएस कार्यक्षमता प्राप्त करता है तो इसे 16 बाइट्स के ब्लॉक आकार के लिए पैडिंग विधि की आवश्यकता होती है। पीकेसीएस # 7 इस पैडिंग विधि को निर्दिष्ट करता है जो is identical to PKCS#5 padding है, सिवाय इसके कि इसे 2 से 255 बाइट्स के ब्लॉक आकारों के लिए परिभाषित किया गया है (यदि बाइट का अधिकतम मान शून्य आधारित हस्ताक्षरित पूर्णांक को एन्कोड करता है)। हालांकि, पैडिंग विधि पहले से ही थी; इसे "PKCS5Padding"
नाम दिया गया था। तो एक नया नाम शुरू करने के बजाय, "PKCS5Padding"
को फिर से उपयोग किया गया था।
अब तक सूर्य प्रदाता को वास्तव में "PKCS7Padding"
का समर्थन करना चाहिए क्योंकि पीकेसीएस # 5 पैडिंग बस गलत है। यह सिर्फ जावा नामकरण समस्या नहीं है, यह किसी भी डेवलपर के लिए एक मुद्दा है जो जावा पर क्रिप्टोग्राफिक प्रोटोकॉल या पोर्ट अन्य अनुप्रयोगों को लागू करने का प्रयास करता है। अभी के लिए, आपको "PKCS7Padding"
के बजाय "PKCS5Padding"
का उपयोग करना चाहिए।
स्रोत
2015-01-24 22:39:08
ध्यान दें कि ईसीबी सीपीए सुरक्षित नहीं है, इसके बजाय सीबीसी का उपयोग करें (यदि आप केवल संग्रहीत डेटा की गोपनीयता चाहते हैं)। –