/ / क्या जावा में अंतर्निहित RSA-OAEP एन्क्रिप्शन के लिए एक डिफ़ॉल्ट लेबल है? - आरएसए, सार्वजनिक-कुंजी

जावा में अंतर्निहित आरएसए-ओएईपी एन्क्रिप्शन के लिए कोई डिफ़ॉल्ट लेबल है? - आरएसए, सार्वजनिक कुंजी

मैं RSA-OAEP के अपने संस्करण को लागू कर रहा हूंSHA-256। मैं इसे RSA-OAEP और SHA-256 का उपयोग करके जावा में सिफर वर्ग के आउटपुट से तुलना करके इसका परीक्षण करना चाहता हूं। PKCS # 1 के अनुसार, RSA-OAEP को एक लेबल की आवश्यकता होती है, जो डिफ़ॉल्ट रूप से एक खाली स्ट्रिंग है। हालांकि, मैं "निर्मित वर्ग में एक लेबल इनपुट करने का एक तरीका नहीं ढूंढ सकता हूं। मेरा कार्यान्वयन एन्क्रिप्शन और डिक्रिप्शन दोनों के लिए सही ढंग से काम करने के लिए लगता है, लेकिन सिफर वर्ग अलग आउटपुट का उत्पादन करता है। क्या कोई डिफ़ॉल्ट लेबल है जो सिफर वर्ग उपयोग करता है?

उत्तर:

जवाब के लिए 2 № 1

PKCS1v2 में लेबल L क्या कहलाता है।1 RSAES-OAEP को एन्कोडिंग पैरामीटर P v2.0 कहा जाता था; A.2.1 में pSourceAl एल्गोरिदम का वर्णन देखें। जावा एपीआई पुरानी शब्दावली रखता है, संभवतः संगतता के लिए, और डिफ़ॉल्ट वास्तव में एक खाली ओकटेट स्ट्रिंग है, जिसे जावा में एक के रूप में लागू किया गया byte लंबाई की सरणी 0. देखें https://docs.oracle.com/javase/7/docs/api/javax/crypto/spec/PSource.PSpecified.html । ध्यान दें कि जब पी-कॉल-मी-एल खाली है, तब भी हैश मास्किंग खाली होने से पहले जो डीबी में जाता है।

जब आप "अलग आउटपुट" कहते हैं, तो आप महसूस करते हैंउस OAEP को यादृच्छिक रूप से (एक तरह से जो प्रतिकूल परिस्थितियों में सूचना को लीक नहीं करता है) और उसी प्लेनटेक्स्ट के हर एन्क्रिप्शन को एक अद्वितीय सिफरटेक्स्ट का उत्पादन करना चाहिए, लेकिन उन सभी को वापस उसी प्लेनटेक्स्ट में डिक्रिप्ट करना चाहिए, है ना?