Вы использовали PKCS1v1.5 заполнение при шифровании.Это, вероятно, хорошо, поскольку люди, которые используют шифрование, обычно хотят и ожидают, что оно обеспечит безопасность и, в частности, конфиденциальность, а шифрование RSA без заполнения почти во всех случаях (по-видимому, в том числе и у вас) легко нарушается и не является безопасным.Ищите «учебник RSA» или «RSA no padding» в crypto.SX и security.SX для много вопросов и ответов о причинах.(Даже v1.5 не идеален; в некоторых ситуациях он остается уязвимым для атаки с использованием адаптивного зашифрованного текста из-за Bleichenbacher, также описанного в этих стеках, и OAEP является лучшим в настоящее время стандартизированным заполнением. Но оставьте это в стороне.)
Но вы не использовали его для расшифровки.В результате ваше расшифрованное значение включает заполнение шифрования v1.5, которое представляет собой октет со значением 2, столько ненулевых случайных октетов, сколько необходимо для того, чтобы «закодированное сообщение» (EM), используемое в примитиве RSA, имело правильный размер, т.е.размер модуля и один нулевой октет, за которым следует открытый текст.Вы должны использовать PKCS1_v1_5
для расшифровки , как вы это сделали для шифрования (за исключением частного ключа).