पीएआर पर Crypt_RSA पीकेसीएस # 1 एन्कोडिंग का उपयोग नहीं कर रहा है। मुझे संदेह है कि यही कारण है कि .NET आपको एक त्रुटि संदेश दे रहा है।
print $rsa_obj->encryptBinary("1234567", $key_pair->getPublicKey());
कि के उत्पादन में ले रहा है और यह पाइप:
यह तोड़ने का एक उदाहरण के रूप में, मैं स्ट्रिंग एन्क्रिप्ट करने के लिए Crypt_RSA का उपयोग कर "1234567" (मैं कुंजी लोड हो रहा है दिखा छोड़ देंगे) एक PHP स्क्रिप्ट बनाया openssl कमांड लाइन टूल के माध्यम से निम्न त्रुटि देता है:
$ ./crypt | openssl rsautl -inkey privkey.pem -decrypt
RSA operation error
18437:error:04065084:rsa routines:RSA_EAY_PRIVATE_DECRYPT:data too large for modulus:fips_rsa_eay.c:558:
openssl डिफ़ॉल्ट रूप से 1 गद्दी उम्मीद PKCS #, लेकिन रॉ जोड़ने (कोई पैडिंग) openssl करने के लिए ध्वज या तो मदद नहीं करता है।
$pem = file_get_contents("pubkey.pem");
$key = openssl_pkey_get_public($pem);
$encrypted = "";
if(openssl_public_encrypt("1234567", $encrypted, $key)) {
print $encrypted;
} else {
print "failed\n";
}
और php में डिक्रिप्ट कोड:
संदर्भ में
$pem = file_get_contents("privkey.pem");
$key = openssl_pkey_get_private($pem);
$enc_data = file_get_contents("openssl.crypted");
$decrypted = "";
if(openssl_private_decrypt($enc_data, $decrypted, $key)) {
print "$decrypted\n";
} else {
print "failed\n";
}
प्रमाण पत्र
php में openssl एक्सटेंशन का उपयोग करना उचित गद्दी (चूक PKCS # 1 के लिए, दूसरों उपलब्ध है) देता है आरएसए के एक्स.50 9 प्रमाण पत्र हैं, जो आरएसए कुंजी और उन चाबियों के बारे में डेटा हैं। एसएसएल में X.50 9 प्रमाण पत्र का उपयोग किया जाता है, लेकिन आरएसए का उपयोग करने की आवश्यकता नहीं है।
कुंजी के साथ कोई समस्या हो सकती है? अजीब पात्र, यूनिकोड और यूटीएफ -8 के बीच समस्या? –
आप अलग-अलग पैडिंग का उपयोग कर रहे हैं। – SLaks
आरई: पैडिंग: स्ट्रिंग के बारे में क्या है? इस मामले में, यह बिल्कुल 32 बाइट्स है - जो 8 तक विभाजित है ... तो क्या मुझे यह कवर किया गया है? – user312904