1

I'm trying to encrypt some things with phpseclib but for some reason the encrypt() function does not return anything.

Here is the core I have now:

include('/pathto/Crypt/RSA.php');

$key = '-----BEGIN PUBLIC KEY-----
MIIB/TCCAWYCCQDJ7TMYJFzqYDANBgkqhkiG9w0BAQUFADBCMQswCQYDVQQGEwJjbjEVMBMGA1UE
BwwMRGVmYXVsdCBDaXR5MRwwGgYDVQQKDBNEZWZhdWx0IENvbXBhbnkgTHRkMCAXDTE3MDUwOTA1
MTkxMFoYDzIxMTcwNDE1MDUxOTEwWjBCMQswCQYDVQQGEwJjbjEVMBMGA1UEBwwMRGVmYXVsdCBD
aXR5MRwwGgYDVQQKDBNEZWZhdWx0IENvbXBhbnkgTHRkMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCB
iQKBgQDb8V0OYUGP3Fs63E1gJzJh+7iqeymjFUKJUqSD60nhWReZ+Fg3tZvKKqgNcgl7EGXp1yNi
fJKUNC/SedFG1IJRh5hBeDMGq0m0RQYDpf9l0umqYURpJ5fmfvH/gjfHe3Eg/NTLm7QEa0a0Il2t
3Cyu5jcR4zyK6QEPn1hdIGXB5QIDAQABMA0GCSqGSIb3DQEBBQUAA4GBANhIMT0+IyJa9SU8AEya
WZZmT2KEYrjakuadOvlkn3vFdhpvNpnnXiL+cyWy2oU1Q9MAdCTiOPfXmAQt8zIvP2JC8j6yRTcx
JCvBwORDyv/uBtXFxBPEC6MDfzU2gKAaHeeJUWrzRv34qFSaYkYta8canK+PSInylQTjJK9VqmjQ
-----END PUBLIC KEY-----';

$rsa = new Crypt_RSA();
$rsa->loadKey($key);

$sometext = 'test this text';

echo $rsa->encrypt($sometext);

I downloaded the version 1.0.

What is wrong?


I dug a little deeper and found this issue and changed a part of my test code to this:

if (!$rsa->encrypt($sometext)) {
    echo "false";
} else {
    echo $rsa->encrypt($sometext);
}

This proves that my key is somehow wrong. But how should the format be?

mkrieger1
  • 19,194
  • 5
  • 54
  • 65
MartijnD
  • 15
  • 7

1 Answers1

1

Your RSA public key is actually an X509 cert. It contains a public key but isn't, in and of itself, a public key. I was able to get your code sample working by doing this:

<?php
include('File/X509.php');

$key = '-----BEGIN PUBLIC KEY-----
MIIB/TCCAWYCCQDJ7TMYJFzqYDANBgkqhkiG9w0BAQUFADBCMQswCQYDVQQGEwJjbjEVMBMGA1UE
BwwMRGVmYXVsdCBDaXR5MRwwGgYDVQQKDBNEZWZhdWx0IENvbXBhbnkgTHRkMCAXDTE3MDUwOTA1
MTkxMFoYDzIxMTcwNDE1MDUxOTEwWjBCMQswCQYDVQQGEwJjbjEVMBMGA1UEBwwMRGVmYXVsdCBD
aXR5MRwwGgYDVQQKDBNEZWZhdWx0IENvbXBhbnkgTHRkMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCB
iQKBgQDb8V0OYUGP3Fs63E1gJzJh+7iqeymjFUKJUqSD60nhWReZ+Fg3tZvKKqgNcgl7EGXp1yNi
fJKUNC/SedFG1IJRh5hBeDMGq0m0RQYDpf9l0umqYURpJ5fmfvH/gjfHe3Eg/NTLm7QEa0a0Il2t
3Cyu5jcR4zyK6QEPn1hdIGXB5QIDAQABMA0GCSqGSIb3DQEBBQUAA4GBANhIMT0+IyJa9SU8AEya
WZZmT2KEYrjakuadOvlkn3vFdhpvNpnnXiL+cyWy2oU1Q9MAdCTiOPfXmAQt8zIvP2JC8j6yRTcx
JCvBwORDyv/uBtXFxBPEC6MDfzU2gKAaHeeJUWrzRv34qFSaYkYta8canK+PSInylQTjJK9VqmjQ
-----END PUBLIC KEY-----';

$x509 = new File_X509();
$x509->loadX509($key);
$rsa = $x509->getPublicKey();

$sometext = 'test this text';

echo $rsa->encrypt($sometext);
neubert
  • 15,947
  • 24
  • 120
  • 212
  • 1
    You have pointed me in the right direction. Thanks for that! I also needed to include the `Crypt/RSA.php` and `$rsa = new Crypt_RSA(); $rsa->loadKey($pkey); echo $rsa->encrypt($plaintext);` to get it working! – MartijnD Aug 02 '18 at 13:51