2012-10-10 26 views
5

Tôi nghĩ rằng câu hỏi này đã được hỏi, tuy nhiên tôi đã thử một số ví dụ không có kết quả. Vấn đề của tôi là ... Tôi có một thiết lập ứng dụng Android để sử dụng mã hóa SQLCipher DB, hoạt động tốt, trên thiết bị.Android sử dụng SQLCipher - làm thế nào bạn có thể giải mã?

Trong thử nghiệm trên trình giả lập, nếu tôi tải xuống tệp Cơ sở dữ liệu bằng DDMS, làm cách nào để đọc tệp đó để kiểm tra bảng và dữ liệu? Tôi đã thử sử dụng lệnh shell cho SQLite3, và các ví dụ ATTACH, tuy nhiên mỗi khi tôi làm như vậy, tôi chỉ nhận được thông báo sau 'Lỗi: tệp được mã hóa hoặc không phải là một cơ sở dữ liệu'. Điều này chắc chắn cho thấy rằng ENCRYPT đang làm việc, nhưng làm thế nào tôi làm tôi DECRYPT đúng cách bên ngoài trình giả lập/nhật thực?

Tôi có cần một ứng dụng khách SQLite khác không? Bất cứ ai khác bị mắc kẹt về điều này?

Tôi đang sử dụng: SQLCipher cho Android 2.0.8 06/14/2012

Bất kỳ trợ giúp nào? Cảm ơn

+0

Và những gì bạn đang sử dụng trên máy tính phát triển của bạn? – CommonsWare

+0

Như để thử và đọc các tập tin được mã hóa hoặc cho sự phát triển Android? Tôi đã thử SQLiteStudio v2.0.28/SQLite lệnh shell 3.7.14.1/và SQLite Manager cho Firefox. Dev. môi trường là Eclipse Juno, nhắm mục tiêu đến Android min. API 8 dành cho Android 2.2. – Hunter23

+0

Và thực hiện bất kỳ quảng cáo nào trong số những quảng cáo có hỗ trợ SQLCipher? – CommonsWare

Trả lời

3

Các công cụ SQLite "bình thường" không bao gồm SQLCipher.

Bạn phải download souce và compile it yourself để nhận được trình bao lệnh có hỗ trợ SQLCipher.

+0

Ah, vì vậy phải rõ ràng - phiên bản 'Cộng đồng' có thể được thêm vào Android dự án và làm việc tốt trong dự án; Tuy nhiên để tích hợp vào một khách hàng SQLite, bạn sẽ cần phải mua phiên bản 'Thương mại' cho các tệp nhị phân đó để biên dịch?Hoặc phiên bản 'Cộng đồng' có thể được biên dịch vào hệ vỏ hiện tại không? – Hunter23

+0

Ngoài ra: cảm ơn cho liên kết biên dịch, tôi sẽ làm việc thông qua đó để xem tôi có thể làm việc này không. Cho đến nay trông giống như những gì tôi cần. Vì vậy, nhiều cho việc có một giải pháp nhanh chóng/dễ dàng có sẵn. Tôi sẽ thêm bình luận nếu tôi gặp khó khăn. Cảm ơn!!! – Hunter23

3

Tôi đã giải quyết vấn đề này bằng cách sử dụng tập lệnh nhỏ này.

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;' 

Các chương trình này nên được thêm vào PATH của bạn:

Thay thế trong kịch bản:

  • com.example với tên gói của bạn
  • database.db với tên databasefile
  • encryption_key với mật khẩu mã hóa
Các vấn đề liên quan