मान लें मैं एक सार्वजनिक-निजी कुंजी युग्म को उत्पन्न करने के लिए निम्न जावा कोड है:RSA एन्क्रिप्शन, पीएचपी
KeyPairGenerator generator = KeyPairGenerator.getInstance ("RSA");
SecureRandom random = SecureRandom.getInstance("SHA1PRNG");
generator.initialize (1024, random);
KeyPair pair = generator.generateKeyPair();
RSAPrivateKey priv = (RSAPrivateKey)pair.getPrivate();
RSAPublicKey pub = (RSAPublicKey)pair.getPublic();
// Sign a message
Signature dsa = Signature.getInstance("SHA1withRSA");
dsa.initSign (priv);
dsa.update ("Hello, World".getBytes(), 0, "Hello, World".length());
byte[] out = dsa.sign();
/* save the signature in a file */
FileOutputStream sigfos = new FileOutputStream("sig");
sigfos.write(out);
sigfos.close();
एक के बारे में कैसे जाना है और PHP में फाइल "sig" डिक्रिप्ट हैं? मैंने पोस्ट पढ़ा है: https://stackoverflow.com/a/1662887/414414 जो DER
फ़ाइल को PEM
में परिवर्तित करने के लिए एक फ़ंक्शन प्रदान करता है (मान लें कि मैं जावा से सार्वजनिक कुंजी भी सहेजता हूं)।
मैं की तरह कुछ की कोशिश की है:
$key = openssl_pkey_get_public ("file://pub_key.pem");
$data = null;
openssl_public_decrypt (file_get_contents ("sig"), $data, $key);
echo $data, "\n";
यह सफलतापूर्वक संदेश decrypts, लेकिन यह कई अजीब वर्ण है।
हमारा परिदृश्य एक जावा क्लाइंट है जो एक PHP सर्वर पर संदेश भेज रहा है, लेकिन डेटा को एक निजी कुंजी से एन्क्रिप्ट करता है। PHP सार्वजनिक कुंजी के बारे में जानता है, जिसे इसे संदेश को डिक्रिप्ट और सत्यापित करने के लिए उपयोग करना चाहिए।
मैंने एसओ पर इस मुद्दे के बारे में बहुत सी पोस्ट पढ़ी हैं, लेकिन मुझे एहसास हुआ है कि यह एक विशिष्ट मुद्दा है, खासकर यदि उपयोग में अलग-अलग एल्गोरिदम हैं, तो क्षमा करें यदि यह हो सकता है एक डुप्लिकेट
कोई भी प्रतिक्रिया बहुत सराहना की जाती है!
"यह सफलतापूर्वक संदेश को अस्वीकार करता है, लेकिन यह कई अजीब पात्र हैं।" - क्या आप इसके बारे में अधिक विशिष्ट हो सकते हैं? क्या यह बस एक एन्कोडिंग मुद्दा हो सकता है? –
क्या डीकोडेड संदेश प्रकार मूल पाठ की तरह दिखता है, या यह पूरी तरह से खराब है? –
क्या आप जावा और PHP के बीच भेजे गए संदेशों को सत्यापित करने की कोशिश कर रहे हैं, या उन्हें एन्क्रिप्ट कर रहे हैं? अथवा दोनों? –