Проблема шифрования AES между Java и C # .Net - PullRequest
1 голос
/ 18 января 2011

Я просмотрел бесчисленные примеры в Интернете и на этом форуме и не могу найти свой ответ.

У меня есть клиент Java, который успешно шифрует и дешифрует данные.У меня есть клиент .Net, который успешно шифрует и дешифрует данные.

Я представляю версию .Net как веб-сервис.Я шифрую некоторые данные в клиенте java и отправляю их в веб-службу .Net.Я получаю: - Паддинг недействителен и не может быть удален .--

Поэтому я уверен, что я использую ту же кодировку, IV, Key, всеЕдинственное, что я могу понять, это то, что я отправляю байтовый массив в сервис.Когда я выкладываю массив из java-клиента и сравниваю его с массивом, поступающим в службу, как и следовало ожидать, массив в службе отличается тем, что он преобразуется в массив байтов без знака.Вот два массива:

[- 47 17 -27 -32 -101 54 -93 47 85 -83 -31 -102 53 -125 115 -14]

[209 17 229224 155 54 163 47 85 173 225 154 53 131 115 242]

Итак, я предполагаю, что это вызывает проблему.Как я могу обойти это?Ни одна из реализаций Rijndael не принимает подписанные байтовые массивы.Мне не хватает конверсии?

Спасибо за любую помощь.Я готов выбить мой мозг через мою задницу.ST

РЕДАКТИРОВАТЬ - После просмотра кода я обнаружил свою ошибку.Мне пришлось скопировать некоторые данные и начать с неправильного индекса.Arrrgggghhhhhhh!

Извините за беспокойство.

1 Ответ

1 голос
/ 18 января 2011

В обоих случаях вы получаете одни и те же фактические данные - просто Java не поддерживает неподписанные байты.Если каждая платформа может дешифровать свои собственные данные, и у вас есть одинаковые данные, сгенерированные обеими платформами, трудно понять, как они могут различить.

Я предполагаю, что вы делаете что-то иначе на стороне .NET.Нам нужно увидеть код, чтобы знать наверняка.

Что произойдет, если вы попытаетесь расшифровать те же самые данные в клиенте .NET, который может расшифровать данные?Я предлагаю вам создать небольшое консольное приложение, которое просто пытается расшифровать файл.Сделайте так, чтобы ваш .NET сервер сохранил все данные, которые он дал в файл, а затем попытайтесь расшифровать его как обычно.Затем запустите консольное приложение для файла.Сообщите о результатах здесь, и мы постараемся помочь вам разобраться в них.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...