es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Encriptación/Desencriptación en Flutter adaptando código en Java

Estoy tratando de crear una aplicación en Flutter y el código de ejemplo que tengo está en Java.

Aquí está el código de ejemplo en Java:
https://gist.github.com/kapiljhajhria/72a22ff75e238878f539f7bb21026208

y aquí está mi código de Flutter:
https://gist.github.com/kapiljhajhria/795d1a7c7cf1c76ca8e327bf8b2f51de

Aquí hay un breve resumen de lo que estoy haciendo:
1. Generar una clave de sesión única: Clave aleatoria AES 256 bits.
2. Encriptar los datos JSON utilizando la clave de sesión del paso 1.
3. Generar el hash SHA256 de los datos JSON.
4. Encriptar el hash generado en el paso 3 utilizando la clave de sesión del paso 1.
5. Encriptar la clave de sesión utilizando la clave pública. La clave pública se proporciona como un archivo certificate.cer. Copié el valor de cadena y lo agregué a la clase como una constante para que sea más fácil de usar. No estoy seguro si este fue el mejor enfoque.
6. Creé una solicitud POST con 3 parámetros, tal como se muestra en el código Java. Creo que estoy haciendo esta parte correctamente.
7. La respuesta que obtendré estará encriptada utilizando la clave de sesión del paso 1. Por lo tanto, tendré que desencriptar esos datos de respuesta. Aún no he llegado a este paso.

No tengo acceso al servidor donde se realiza esta solicitud.
Dado que la solicitud POST se realiza utilizando una vista web, no puedo encontrar una forma de obtener errores adecuados de mi solicitud. Todo lo que obtengo es una página web que dice “Solicitud inválida”.

Entonces, mi primera suposición es que no estoy utilizando correctamente la clave pública para encriptar mi clave de sesión.
Si esa parte es correcta, entonces no estoy encriptando los datos correctamente o mi método de encriptación no coincide con los métodos de encriptación utilizados en el código Java. Tal vez la clave de sesión que estoy generando no es correcta.

Cualquier ayuda sería muy apreciada. Gracias. Si necesitas algo de mí, por favor házmelo saber.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Solución

    Parece que el código de Flutter que has compartido no está completo, ya que no incluye las funciones de encriptación y desencriptación utilizadas en el código de Java. Para solucionar el problema de por qué tu solicitud está fallando, debes intentar capturar la solicitud enviada desde el WebView y compararla con la solicitud enviada desde el código de Java. Puedes utilizar herramientas como Charles Proxy, Wireshark o Fiddler para capturar las solicitudes.

    Sin embargo, aquí hay algunas sugerencias que podrían ayudarte:

    • Asegúrate de que estás utilizando los métodos de encriptación y desencriptación correctos que se utilizan en el código de Java. Verifica si el código de Java utiliza algún algoritmo de encriptación personalizado o si utiliza alguna biblioteca que no está disponible en Flutter.
    • Verifica si la clave de sesión que estás generando es la misma que la generada en el código de Java. Puedes imprimir las claves generadas tanto en Java como en Flutter y compararlas.
    • Asegúrate de que estás utilizando la clave pública correcta para encriptar la clave de sesión. Verifica que el certificado que estás utilizando sea el correcto.
    • Asegúrate de que estás enviando los parámetros en el formato y orden correctos, como se muestra en el código de Java. Verifica si el servidor requiere encabezados o tokens de autenticación que no están presentes en tu código de Flutter.

    Una vez que hayas capturado la solicitud y la hayas comparado con el código de Java, deberías poder identificar el problema exacto y solucionarlo adecuadamente.

Comments are closed.