2011-06-08 14 views
10

मैं आरएसए का उपयोग कर डेटा एन्क्रिप्ट करने के लिए PHP के openssl_public_encrypt() का उपयोग कर रहा हूं। लेकिन यह एक निश्चित आकार से बड़ा डेटा एन्क्रिप्ट नहीं करेगा।PHP में लंबे तारों को एन्क्रिप्ट कैसे करें?

मैं इसे मनमाने ढंग से लंबाई के डेटा को एन्क्रिप्ट करने के लिए कैसे प्राप्त कर सकता हूं? 11 -

उत्तर

5

आरएसए, PKCS1 गद्दी का उपयोग कर, केवल की मदद से आप तार कि लंबाई कुंजी (बाइट्स में) कर रहे हैं क्या करते हो है। यह ओपनएसएसएल या PHP प्रतिबंध नहीं बल्कि एक आरएसए प्रतिबंध है।

यदि आप openssl_ * कार्यों के सेट का उपयोग करके लंबे तार करना चाहते हैं तो openssl_seal और openssl_open का उपयोग करें। openssl_seal एक यादृच्छिक स्ट्रिंग उत्पन्न करता है, इसे आरएसए के साथ एन्क्रिप्ट करता है और फिर उस डेटा को एन्क्रिप्ट करता है जिसे आप वास्तव में कुंजी के रूप में पहले वर्णित यादृच्छिक स्ट्रिंग का उपयोग करके आरसी 4 के साथ एन्क्रिप्ट करने की कोशिश कर रहे हैं।

phpseclib, a pure PHP RSA implementation, एक अलग दृष्टिकोण लेता है। यदि आप आरएसए कुंजी से बड़ी स्ट्रिंग को एन्क्रिप्ट करने पर जोर देते हैं तो यह उस स्ट्रिंग को उन हिस्सों में विभाजित करेगा जो अधिकतम आकार आरएसए संभाल सकते हैं और फिर परिणामों को जोड़ सकते हैं।

phpseclib OpenSSL Interoperability पृष्ठ चर्चा करता है कि आप openssl_seal/openssl_open जैसी चीज़ों को करने के लिए phpseclib का उपयोग कैसे कर सकते हैं।

आशा है कि मदद करता है!

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