¿Cuál es la mejor manera de cifrar datos de la aplicación de Android antes de enviarlos al servidor?

Suponiendo que he entendido la pregunta correctamente, normalmente solo se encriptaría durante el tránsito usando TLS.

¿Por qué? Un par de razones:

  1. para asegurarse de que está hablando con el host correcto, probablemente usaría TLS de todos modos. Si no lo hace (ninguno se basa únicamente en los resultados de DNS), no hay forma real de asegurarse de que está hablando con el punto final correcto.
  2. A partir del n. ° 1, implementaría el cifrado dentro de su propio código en lugar de utilizar una capacidad estándar en todas las plataformas. Esto aumenta el riesgo de equivocarse y, por lo tanto, afectar su modelo de seguridad
  3. También debería tener en cuenta cómo se descifran las cosas en el otro extremo, lo que podría llevarlo a un mayor desorden con la administración de claves.
    1. Dependiendo del tamaño de la carga útil, posiblemente tenga que implementar un cifrado simétrico: ¿cómo sincronizaría las claves entre todos sus clientes y servidores (no, la respuesta es no codificar algunas claves)!
    2. Incluso si pudiera salirse con la suya con claves asimétricas (p. Ej., Pares de claves públicas / privadas), aún tendría algunas consideraciones de administración de claves, y aún (probablemente) estaría utilizando TLS. Te golpean dos veces en el rendimiento. De nuevo, no es bueno

Espero que esto explique por qué generalmente solo se encripta en tránsito, pero tal vez tenga algunos requisitos especiales que lo obligan a encriptar antes de enviar TLS.

No puede elegir el método de cifrado como usuario. Podría intentar crear un nuevo lenguaje que pueda ser entendido por las personas requeridas.

Como programador, CRC: la verificación de redundancia cíclica es uno de los métodos de cifrado recomendados.