PEAR üzerinde Crypt_RSA PKCS # 1 kodlaması kullanılarak değildir. Ben. NET size bir hata mesajı veriyor neden olduğunu sanıyorum.
Bu kırılma bir örnek olarak, (Ben anahtar yükleme gösteren atlarsınız) dizesini "1234567" şifrelemek için Crypt_RSA kullanarak bir php komut dosyası oluşturulur:
print $rsa_obj->encryptBinary("1234567", $key_pair->getPublicKey());
Bunun çıktısını alarak ve openssl komut satırı aracı aracılığıyla boru aşağıdaki hatayı veriyor:
$ ./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 varsayılan PKCS # 1 dolgu beklediğini, ancak openssl için-ham (hiçbir doldurma) bayrağı ekleme ya da yardımcı olmuyor.
Php openssl uzantısını kullanarak uygun padding (PKCS # 1 varsayılan, mevcut diğerleri) verir:
$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";
}
Ve php şifresini kod:
$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";
}
RSA bağlamında Sertifikalar bu anahtarlar hakkında RSA anahtarları artı veriler X.509 sertifikaları vardır. X.509 sertifikaları SSL kullanılır, ancak RSA kullanmak için gerekli değildir.