2011-02-04 9 views
10

Czekam na wysyłanie zaszyfrowanych danych między klientem Silverlight a natywnym kodem (C++) za pomocą serwera WCF. Szukałem przy użyciu klasy AesManaged do szyfrowania danych, które klient wysyła z powrotem do serwera, ale zastanawiałem się nad odszyfrowaniem. Przyjmuje się, że jeśli klasa AesManaged jest implementowana zgodnie ze specyfikacją AES, powinna być kompatybilna z każdą biblioteką C++ AES, ale biorąc pod uwagę doświadczenia z interpretacjami specyfikacji Microsoft (i innych dostawców) wcześniej, uznałem, że powinienem to potwierdzić Jeśli to możliwe.Czy dane szyfrowane w Silverlight są odszyfrowywane za pomocą C++?

Mam zamiar zbudować prototyp, ale miałem nadzieję na odpowiedź od kogoś, kto ma już doświadczenie w tej dziedzinie. Używanie C++/CLI lub C# w celu uzyskania dostępu do klasy AesManaged nie jest opcją, ponieważ mam do czynienia ze starszym kodem, do którego dodałem funkcjonalność.

Odpowiedz

1

Wszystko, co mogę powiedzieć, to to, że dobrze było zapytać; Nie mogę mówić o tym konkretnym współdziałaniu, ale próbowałem komunikować się z częścią starego oprogramowania, które używało starszej natywnej implementacji o nazwie AesLib, i próbowałem użyć AesCryptoServiceProvider. Nie rozmawiali ze sobą, najwyraźniej dlatego, że AesLib używa trybu bez IV, lub ma statyczną lub deterministyczną IV, której nie mogłem odkryć.

Jeśli można uzyskać odwołanie do implementacji AES, której używa macierzysty serwer, i zaimplementować wokół niej opakowanie kompatybilne z ICryptoServiceProvider, prawdopodobnie byłaby to najlepsza gwarancja nienaruszania wiadomości (choć może to spowodować problemy)). W przeciwnym razie upewniłbym się, że mam wszystkie możliwe do wykrycia informacje na temat tej implementacji, aby móc skonfigurować program AesManaged w ten sam sposób. Będziesz potrzebował co najmniej klucza, IV, wielkości bloku i trybu.

0

Z powodzeniem użyłem C# AesManaged razem z wdrożeniem PHP AES dawno temu (w Silverlight 2 Beta), więc jest to z pewnością możliwe.

Możesz jednak chcieć dokładnie przestudiować takie rzeczy jak IV, wyściółki, rozmiary bloków i tryby, aby upewnić się, że ustawienia dla AES są zgodne.

Powiązane problemy