Шифрование RSA в Java: межплатформенные проблемы?

Ситуация

Я работаю с шифрованием RSA в Java. Я пытаюсь зашифровать данные на телефоне разработчика HTC Saphire (32B), оснащенном Cyanogenmod Android 2.2, а затем расшифровать указанные данные на 64-битном сервере под управлением Mandriva Linux 2010. Я использую одну и ту же пару открытого и закрытого ключей на обеих машинах. , может правильно зашифровать / расшифровать данные на телефоне Android, может правильно зашифровать / расшифровать данные на сервере Linux, но я не могу зашифровать данные на телефоне, а затем расшифровать их на сервере. Я получаю исключения с плохим заполнением. Я подтвердил, что данные отправляются телефоном правильно и правильно анализируются сервером. Таким образом, я не могу понять, почему расшифровка не работает. Кто-нибудь может мне с этим помочь? Возможно, алгоритм RSA в Java имеет какое-то базовое предположение о размере слова?

Дополнительная информация:

  • Моя библиотека шифрования / дешифрования основана на руководстве, найденном здесь.
  • Мой ключ шифрования имеет длину 2048 бит. , но я вижу аналогичное поведение с разными размерами ключей.
  • Я упаковал свой код шифрования / дешифрования RSA в файл jar. Он был скомпилирован с помощью Eclipse на сервере.
  • Программа, использующая библиотеку шифрования на телефоне Android, использует указанную выше библиотеку. Он тоже был построен с использованием Eclipse.
  • Серверная программа была создана с использованием Netbeans (поскольку в то время это было проще сделать).

Другие вопросы

  • Существуют ли другие бесплатные алгоритмы / библиотеки шифрования с открытым ключом для Java? Они работают кросс-платформенные? Какой производительности от них можно ожидать? И т. Д. И т. Д. Я изучал это и не нашел много; возможно, я ищу неправильные ключевые слова.

Фу! Думаю, все. Заранее благодарим за помощь!

10
задан Dylan Knowles 7 February 2011 в 20:22
поделиться