2012-10-10 67 views
5

Creo que se ha formulado esta pregunta; sin embargo, he intentado varios de los ejemplos sin resultado. Mi problema es este ... Tengo una configuración de aplicación de Android para usar el cifrado SQLCipher DB, que funciona bien en el dispositivo.Android usando SQLCipher: ¿cómo puedes descifrar?

Al probar en un emulador, si descargo el archivo de base de datos usando el DDMS, ¿cómo leo ese archivo para verificar tablas y datos? He intentado usar el shell de comandos para SQLite3 y los ejemplos de ADJUNTAR, sin embargo, cada vez que lo hago obtengo el siguiente mensaje 'Error: el archivo está encriptado o no es una base de datos'. Esto ciertamente muestra que el ENCRYPT está funcionando, pero ¿cómo lo hago DECRYPT correctamente fuera del emulador/eclipse?

¿Necesito un cliente SQLite diferente? ¿Alguien más se queda atascado en esto?

que un usando: SQLCipher para Android 2.0.8 06/14/2012

Cualquier ayuda? Gracias

+0

Y lo está usando en el equipo de desarrollo? – CommonsWare

+0

¿Como en intentar leer el archivo encriptado o para el desarrollo de Android? He intentado SQLiteStudio v2.0.28/SQLite command shell 3.7.14.1/y SQLite Manager for Firefox. Dev. el entorno es Eclipse Juno, apuntando a Android min. API 8 para Android 2.2. – Hunter23

+0

¿Y alguno de ellos anuncia que tienen soporte SQLCipher? – CommonsWare

Respuesta

3

Las herramientas SQLite "normales" no incluyen SQLCipher.

Tienes que download souce y compile it yourself para obtener un shell de comandos con soporte SQLCipher.

+0

Ah, para que quede claro, la versión 'Community' se puede agregar a un Android proyecto y trabajo muy bien dentro del proyecto; Sin embargo, para integrar en un cliente de SQLite, ¿debería comprar la versión comercial para que compilen esos binarios?¿O puede compilarse la versión 'Community' en el shell existente? – Hunter23

+0

Adición: gracias por el enlace de compilación, lo revisaré para ver si puedo hacer que funcione. Hasta ahora eso se parece a lo que necesito. Tanto por tener una solución rápida/fácil disponible. Agregaré un comentario si me quedo atascado. ¡¡¡Gracias!!! – Hunter23

3

Lo resolví con este pequeño script.

decrypt.sh

#!/bin/bash 
# Bashscript to decrypt databases 

echo "pull db from device.." 
adb pull /data/data/com.example/databases/database.db 

echo "removing previous decrypted db, if existent.." 
rm -r decrypted_database.db 

echo "decrypting database.db into decrypted_database.db" 
sqlcipher -line database.db 'PRAGMA key = "encryption_key";ATTACH DATABASE "decrypted_database.db" AS decrypted_database KEY "";SELECT sqlcipher_export("decrypted_database");DETACH DATABASE decrypted_database;' 

Estos programas deben ser añadidos a su PATH:

Reemplazar en escritura:

  • com.example con su nombrepaquete
  • database.db con el nombre DatabaseFile
  • encryption_key con contraseña de cifrado
Cuestiones relacionadas