В дополнение к тому, что сказал Джеймс, я подозреваю, что любая используемая вами библиотека Python выполняет заполнение PKCS1, если оно вообще выполняет заполнение.
Сравните это с phpseclib, который по умолчанию использует заполнение OAEP. Заполнение PKCS1 может быть включено, но оно по умолчанию соответствует более безопасному заполнению OAEP.
Кроме того, шифрование PKCS1 и OAEP рандомизировано. Я говорю это потому, что мне интересно, говорите ли вы, что код PHP неправильный, потому что он не дает того же результата, что и код Python. Это не должноЕсли вы дважды запускаете шифрование RSA с помощью phpseclib с одним и тем же открытым текстом и ключом каждый раз, вы каждый раз получаете новый зашифрованный текст. PKCS1 и OAEP были разработаны таким образом, чтобы защитить от известных атак открытого текста.