Icono del sitio Blog de Programación y Desarrollo – Nube Colectiva

Como Encriptar los Datos Almacenados en Shared Preferences de Android

Demo Github

Una aplicación Android puede guardar datos importantes internamente en el equipo o dispositivo móvil, exactamente en Shared Preferences pero no es útil para guardar datos grandes, para datos grandes se puede usar SQLite, Firebase, consumir los datos mediante API REST, etc. Los datos que se almacenan en Shared Preferences son muy fáciles de leer y un usuario con los conocimientos necesarios puede hacerlo, pero Android lanzo un funcionalidad que nos permite encriptar los datos que se almacenan en Shared Preferences y en este Post veremos como funciona.

Antes del SDK 23 de Android (Android 6.0), se utilizaban herramientas extras para poder encriptar la información en Shared Preferences y en muchos casos los Desarrolladores evitaban hacer esta tarea de encriptación.

A partir del SDK 23 y en adelante, podemos hacer uso del método o clase EncryptedSharedPreferences que nos permite encriptar fácilmente los datos sin necesidad de usar una herramienta extra, es decir, de manera nativa en Android.

Guardando Datos en Shared Preferences

Bien voy a guardar unos 3 datos en Shared Preferences, específicamente son datos de un postre o producto:


En mi archivo MainActivity.java dentro del método onCreate guardo los datos en Shared Preferences de manera normal


Corro mi aplicación en el dispositivo móvil o emulador y se debió de guardar los datos internamente en Shared Preferences, para verificar si los datos se han almacenado correctamente voy a Device File Explorer > data > data > com.miapp.miapp > shared_prefs > Datos.xml

Si deseas puedes ver el siguiente video, en donde explico a detalle como ver los datos almacenados en Shared Preferences:

El archivo que he creado es Datos.xml y si lo abro, en su interior se encuentra los datos guardados correctamente:


Con esto he guardado los Datos sin problemas, pero supongamos que estos datos son datos muy importantes y queremos que estos datos se encripten, a continuación veremos como hacerlo.

Encriptar los Datos Almacenados en Shared Preferences

Para comenzar a usar la encriptación de los datos almacenados en Shared Preferences, primero debemos añadir la dependencia correspondiente, para esto abre el archivo build.gradle (Module: app) que se encuentra en Gradle Scripts > build.gradle (Module: app)


En el archivo build.gradle (Module: app) dentro de la linea dependencies (dependencias) añade la dependencia de seguridad de Android:


Bien ahora voy a modificar en el código la forma de guardar los Datos en Shared Preferences, de esta manera voy a encriptar los datos:


Lo que hice es usar el método MasterKeys de Android para crear varios Strings encriptado con el formato AES256_GCM_SPEC, luego lo coloco dentro la variable sharedPreferences y mas abajo paso esta  variable a la hora de crear los datos en Shared Preferences.

Bien ahora, para verificar si los datos se han encriptado y almacenado correctamente voy a Device File Explorer > data > data > com.miapp.miapp > shared_prefs > Datos Encriptados.xml y puedo ver que los datos ahora están Encriptados:


Con esta encriptación ahora los datos cuentan con una capa de seguridad extra, los datos encriptados cambian constantemente, cada ves que la aplicación se lance nuevamente.

Leer los Datos Encriptados en Shared Preferences

En el Demo de este Post, no explico como leer los datos encriptados en Shared Preferences, pero para hacerlo solo necesitas hacer lo siguiente, por ejemplo si quiero llamar el dato Nombre: 


De esta manera podemos leer dato por dato o los datos que desees de Shared Preferences.

Conclusión

En este Post hemos visto que encriptar los Datos es algo muy fácil, yo hice prueba con datos de un producto o postre, pero si tu tienes datos muy confidenciales, es importante que los encriptes, por seguridad.

Al inicio del Post, hay un Demo en donde puedes ver la encriptación en acción.

Nota(s)

 

Síguenos en nuestras Redes Sociales para que no te pierdas nuestros próximos contenido.

Salir de la versión móvil