Расшифровка RSA не работает

Я пытаюсь зашифровать и расшифровать простую строку с помощью PHPseclib, но когда я пытаюсь ее расшифровать, результат будет нулевым или пустым. Может ли кто-нибудь помочь мне, пожалуйста?

вот мои функции

public function myEncrypt($conteudoArquivo, $private_key) {
$rsa = new Crypt_RSA();
$rsa->loadKey($private_key);
$rsa->setEncryptionMode(CRYPT_RSA_ENCRYPTION_PKCS1);
$cipherText = base64_encode($rsa->encrypt($conteudoArquivo));
return $cipherText;
}

public function myDecrypt($cipherText, $public_key) {
$rsa = new Crypt_RSA();
$rsa->loadKey($public_key);
$rsa->setEncryptionMode(CRYPT_RSA_ENCRYPTION_PKCS1);
$plainText = base64_decode($rsa->decrypt($cipherText));
return $plainText;
}

и значения ключей:

$ private_key = "----- НАЧАТЬ RSA ЧАСТНЫЙ КЛЮЧ -----
MIICWwIBAAKBgQCRwpD + gV0skm + 9SHPWFXAHkWV3r37I3N4fom45Z0imih3fDk9E
Q6PuFb56Vfo8IWiNUoP6Gco / eDHcInzO1SSEn07reh86Aosnnj7m / RMg1N5k7A5C
NH26YlATqgJe4DX8SdS / oKLit7xTo3aR + Wg3kZOQQmE5MyRq6TVDywhNyQIDAQAB
AoGAVFk4mN75sUJogSu9RMURGIAOLM2U293ceIgBqxxW0XEZyiu4uTM / WRaiLJ82
eLeIjkeS8hccj9AZYl9exD5Zq7oGTH8HDQAcmZ6p0h3faI1 / sR3gnqEB28GZJyd7
MsFRlRiOEdpJAki33m / 6UsJ7hRHC6X / w2K4wofzmmHopOIECQQDCAMW7gc4Gmyb1
scP8OwA75QZWgeLo36d7ynUzjqoN682ckSbIxbT6z4eYhEKE / It0gt07WTNmrL0s
vv4DH15xAkEAwFcTC1 / FufpDvxt + EKnANmuH5ekri1zcsY3UMJJnjH9e7szfVTH6
JfhTRRSfi / oOe1aRinfcp / zMJhkf36VA2QJAO8K5JlWJ / Yb1rWGhGaWjINAf7637
E / kxQnTPPZ6Iy9kDcWNVKyub4FblUhoL06Nn4fAd7hZAOzSi4ZHD9XpIQQJAc1MC
QTygcp1jB3A1i0oszLR23FyNVldMoE044BK4cZ5hTm + arRt1MFUPoIj4DNbW3g8O
3uZ1cGf8BA / mc5NDKQJAexm + LcJ3DOTaenQwHw77bfXhbvvCtcvAlYOIawkyDlTx
AkBweqy8BEJbsVRSiBv7k6Hh + Т + u1ZWaKDm / ZZCMkA ==
----- END RSA ЧАСТНЫЙ КЛЮЧ ----- ";

$ public_key = "----- НАЧАТЬ ПУБЛИЧНЫЙ КЛЮЧ -----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCU + 1bLfPmcY7qrF / dTbAtuJlv4R / FVc1WEH9HK
U0jQjX / н / db9vz / x0i3te / bKLNEcwUhBu + PWPnOt / qVURG9BUT6RsCRFUn0CyGiUKoy45o9K / MJA
HmbrNtrUB6ckrYLF75Y50nUNsBVHUDw8yQymmiOBT1gc / KM5s1xTz44LMwIDAQAB
----- КОНЕЦ ОБЩЕСТВЕННОГО КЛЮЧА ----- ";

1

Решение

Вам необходимо зашифровать с открытым ключом и расшифровать с помощью закрытого ключа. Вот как работает асимметричное шифрование. В RSA «шифрование» закрытым ключом фактически является подписью, а «расшифровка» открытым ключом — проверкой подписи.

Другое дело, что вы не полностью меняете кодировку Base64. Так что вам нужно сначала декодировать, а затем расшифровать:

$plainText = $rsa->decrypt(base64_decode($cipherText));

Ключи, которые вы представили, нельзя использовать с этим кодом, потому что они имеют другой модуль. Вы можете сгенерировать ключи следующим образом:

$rsa = new Crypt_RSA();
$rsa->setPrivateKeyFormat(CRYPT_RSA_PRIVATE_FORMAT_PKCS1);
$rsa->setPublicKeyFormat(CRYPT_RSA_PUBLIC_FORMAT_PKCS1);
$keys = $rsa->createKey(2048);
$private_key = $keys["privatekey"];
$public_key = $keys["publickey"];
3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]