Являются ли данные зашифрованными в Silverlight дешифруемыми с помощью С++?

Я просматриваю передачу зашифрованных данных между клиентом Silverlight и сервером native (С++) с использованием WCF. Я искал использование класса AesManaged для шифрования данных, которые клиент отправляет обратно на сервер, но задавался вопросом о расшифровке. Существует предположение, что если класс AesManaged реализован в соответствии со спецификацией AES, он должен быть кросс-совместимым с любой библиотекой CES AES, но, учитывая опыт использования "интерпретаций" Microsoft (и других поставщиков), ранее я чувствовал, что должен подтвердить это если возможно.

Я планирую создать прототип, но я надеялся получить ответ от того, у кого уже есть опыт в этой области. Использование С++/CLI или С# для доступа к классу AesManaged не является вариантом, поскольку я имею дело с устаревшим кодом, к которому я добавляю функциональность.

Ответ 1

Все, что я могу вам сказать, это то, что было бы хорошо спросить; Я не могу говорить об этом конкретном взаимодействии, но я пытался связаться с частью старого программного обеспечения, которое использовало более старую встроенную реализацию под названием AesLib, и я пытался использовать AesCryptoServiceProvider. Они не разговаривали друг с другом, по-видимому, потому, что AesLib либо использует режим без IV, либо имеет статическую или детерминированную IV, которую я не мог обнаружить.

Если вы можете получить и ссылаться на реализацию AES, которую использует собственный сервер, и внедрить вокруг нее обертки, совместимые с ICryptoServiceProvider, это, вероятно, будет лучшей гарантией того, что ваше сообщение поступит неповрежденным (хотя это может вызвать проблемы), В противном случае я бы удостоверился, что у меня есть все доступные сведения об этой реализации, поэтому я мог бы настроить AesManaged таким же образом. Вам потребуется, по крайней мере, ключ, IV, размер и режим блока.

Ответ 2

Я успешно использовал С# AesManaged вместе с реализацией PHP AES давно (в Silverlight 2 Beta), поэтому это, безусловно, возможно.

Однако вы можете тщательно изучить такие вещи, как IV, paddings, размеры блоков и режимы, чтобы убедиться, что настройки для AES соответствуют.