RSA шифрует / расшифровывает между C и python

У меня есть сервер, написанный на python и клиенте на C Их задача – отправить секретное сообщение от сервера к клиенту, которое зашифровано с помощью RSA private key . Я использую библиотеку openssl/rsa.h , то есть инициализацию объекта rsa с помощью закрытого ключа и шифрование сообщения с помощью RSA_public_encrypt(length_of_message, "Secret Message", to, rsa, RSA_PKCS1_PADDING) . Затем я отправляю это зашифрованное сообщение на сервер python и пытаюсь расшифровать его с помощью того же закрытого ключа, используя библиотеку from Crypto.PublicKey import RSA . Проблема в том, что он не расшифровывает его должным образом. Он всегда выводит сообщение длиной 128 бит, где секретное сообщение помещается в него случайно (eg '\x23\xa3x\43...Secret Message\xef\x4a') , где он обычно должен возвращать только Secret Message .

  • Cube root modulo P - как это сделать?
  • извлечение открытого ключа из сертификата и шифрование данных
  • Использование коэффициента блокировки для RSA в pycrypto
  • M2Crypto - импортировать ключи из нестандартного файла?
  • Генерация больших простых чисел в python
  • PyCrypto: создание ключа RSA, защищенного паролем DES3
  • Как добавить / изменить пароль для приватного ключа RSA с помощью PyCrypto
  • Подписание RSA и верификация с помощью C #, BouncyCastle и импортированного ключа RSA - пример рабочего Python и нерабочий образец кода C # внутри
  • One Solution collect form web for “RSA шифрует / расшифровывает между C и python”

    Проблема была в дополнении. Модуль rsa Python расшифровывает результат с дополнением PKCS1 и не удаляет PKCS1 . С помощью функции, ниже которой я взял здесь проблему, была решена проблема:

     def pkcs1_unpad(text): if len(text) > 0 and text[0] == '\x02': # Find end of padding marked by nul pos = text.find('\x00') if pos > 0: return text[pos+1:] return None 
    Interesting Posts
    Python - лучший язык программирования в мире.