Una solución, si termina utilizando la API de KeyStore, es generar su contraseña dinámicamente en tiempo de ejecución cada vez que la aplicación necesite acceder a KeyStore. Si basa su algoritmo de contraseña en una variable simple, pero variable, vinculada a la instalación específica, como el MEID del dispositivo (u otra identificación específica del dispositivo físico obtenida en tiempo de ejecución), podría proporcionar una clave para el bloqueo que se vuelve cada vez más difícil para recoger.
Ejemplo: utilice una identificación del dispositivo físico, córtela en tres posiciones y añádalas a la posición final en la cadena ID, luego agregue sus iniciales a la cadena programáticamente. Creo que este enfoque daría una capa de seguridad que no se puede romper fácilmente a menos que el cracker sepa cómo se hizo la clave (es decir, tiene su código fuente).
MEID = MEID + "fluffy" + "2008";
Dónde MEID es una cadena con una identificación del dispositivo, "esponjoso" es el nombre de sus mejores amigos gato, y "2008" es el año de un acontecimiento importante en su vida. Luego ingrese esta nueva cadena en una matriz, analice el número que más le convenga (el día del mes en que obtuvo su licencia de conducir, por ejemplo), retire tres caracteres y suelte esos caracteres al final de la cadena. Clip desde el frente de la cadena a la cantidad de posiciones que necesita para su llave y listo. Esta no debe ser una tarea muy intensiva en cuanto a los procesadores, por lo que, con algún código de tolerancia a fallas para las variables, debería ser capaz de ejecutar esto en su proceso principal incluso sin preocuparse demasiado por obtener un ANR del sistema. Si realmente quieres ponerte froggy, convierte la cuerda en bits en algún punto y "bitwise op" en los cambios. Viola, una clave dinámica baja, que es única para el dispositivo en el que se ejecuta.
EDIT:
Como @RedWarp señaló, descompilación un .apk es siempre dentro del ámbito de la possiblility para cualquier código objeto con las herramientas y la motivación adecuada. Si la generación "clave" es un proceso realmente importante, entonces es imprescindible abstraer el gen clave fuera del alcance de la aplicación.
El verdadero punto que intento hacer con esta respuesta es que un poco de pensamiento puede ir un poco con respecto a la seguridad mínima. Una seguridad más sólida es más profunda que una simple respuesta mía.
Bueno, si se almacenan datos en '/ datos/datos de la aplicación/ /' sólo entonces que la aplicación pueda acceder a él. Esto no es cierto si el teléfono está rooteado. Pero aparte de eso, debería estar bien almacenando datos de contraseña allí. –
Falmarri