2011-06-01 17 views
8

Estoy en el punto en el que puedo permitir que el usuario almacene credenciales para una aplicación web simple en mi futura aplicación de Android. Mi temor (ser nuevo en Android) es que otras aplicaciones (malas) podrían llegar a esta base de datos aparentemente local (local para mi aplicación)¿Es seguro almacenar nombre de usuario + contraseñas en una base de datos SQLite local en Android?

Al escribir esta función ¿debería temer que otras aplicaciones obtengan estos datos? Si es así, ¿cuál es la mejor manera de encriptarlo localmente (pero recuerde que necesito retirarlo en algún momento para iniciar sesión en el usuario cuando están usando la aplicación)

gracias!

+0

Considere salar la contraseña con una sal local única y multiples hash la contraseña salada. Luego, almacena solo el hash final. Luego, repita este proceso cuando el usuario inicie sesión para comparar el hash generado con el hash almacenado. Aun así, un programa de descifrado de contraseñas de gpu puede obtener una contraseña fuerte de 8 caracteres "desde" el hash en cuestión de minutos u horas. – JAL

Respuesta

5

Tengo una situación similar, y encontré el SimpleCrypto class suficiente para que mis necesidades obtengan las contraseñas cifradas para evitar que se lea fácilmente el texto simple de las contraseñas.

Cómo decide utilizar una clave para el cifrado es otra cuestión. As shown here, podría usar el identificador único del teléfono (los problemas obvios son que si cambian de teléfono no puede descifrar sus datos), o simplemente use una cadena aleatoria en su código. Depende de qué tan duro desee realizar la recuperación y qué tan importante es la seguridad de los datos.

3

No ... la otra aplicación no podrá obtener acceso a datos privados como su base de datos sqlite. Pero, vale la pena cifrar al menos las contraseñas, por las dudas.

+0

¿Incluso si el teléfono está rooteado? Perdón por este viejo hilo, solo tengo curiosidad. – VHanded

Cuestiones relacionadas