2011-09-26 12 views
5

Estoy desarrollando una aplicación para Windows (C#), Iphone, Android y Iphone que se conectará a SOAP WebService, que almacena información en una base de datos.Cifrar datos entre C#, ANDROID e IPHONE

Estoy buscando una forma de cifrar/descifrar la información entre esas plataformas. ¿Hay alguna biblioteca de plataformas cruzadas?

Respuesta

2

Como dice @Sascha, AES está disponible en casi todas las plataformas. Lo que tiene que hacer es asegurarse de que todo lo demás sea igual en ambas plataformas:

  1. El mismo modo; use el modo CBC o CTR.
  2. Lo mismo IV; establézcalo explícitamente, no use el valor predeterminado porque a menudo será diferente en sistemas diferentes.
  3. La misma clave; obvio, pero deben ser iguales en el nivel de bytes porque el texto se puede codificar de manera diferente en diferentes sistemas. Indique explícitamente la codificación que está utilizando.
  4. El mismo relleno; para AES, use PKCS7, nuevamente no confíe en el valor predeterminado, que puede ser diferente en diferentes sistemas.

Lo que elija, configure las cosas de manera explícita y no confíe en los valores predeterminados. Los valores predeterminados pueden diferir entre sistemas y cualquier diferencia hará que el descifrado falle.

+1

hi puede ofrecerle ejemplo de demostración simple para esto el uso de todas las tres plataformas? – Pratik

2

¿Has mirado MonoTouch y MonoDroid por Xamarin?

Usando estas librerías probablemente solo puedas usar nativos .Net XML Services entre los tres y compartir todo tu código de back-end.

2

Me gustaría recomendar Advanced Encryption Standard (AES). Es muy seguro y estoy seguro de que cada plataforma tiene una buena implementación predeterminada de este algoritmo.

Tener un vistazo a los detailes: AES on wikipedia