Нужны предложения для хорошего способа шифрования / дешифрования данных, хранящихся в базе данных SQLite на Android - PullRequest
3 голосов
/ 09 апреля 2010

У меня есть некоторые конфиденциальные данные, которые хранятся в SQLite для приложения Android. Мне нужно иметь возможность шифровать при сохранении, а также расшифровывать при десериализации из базы данных тоже. Не уверены, какие у меня варианты на Android для этого?

Ответы [ 6 ]

5 голосов
/ 09 апреля 2010

В Android нет ничего встроенного для шифрования содержимого базы данных. Вы можете зашифровать / расшифровать значения самостоятельно и сохранить зашифрованный материал в базе данных, но это на ваше усмотрение, и вам придется делать это по отдельности.

Для алгоритмов шифрования в Android встроено javax.crypto.

Кроме того, имейте в виду, что если ваш ключ шифрования запечен в вашем приложении, любой желающий сможет пройти ваше шифрование.

1 голос
/ 28 апреля 2010

Здесь нет простого ответа. Думаю, я просто использую что-то простое, чтобы искажать значения столбцов при сериализации.

1 голос
/ 10 апреля 2010

Возможно, вы захотите взглянуть на этот вопрос относительно чтения / записи zip-файлов, защищенных паролем. Он включает несколько ссылок на некоторые библиотеки OSS, которые выполняют эти задачи. Хотя вы не обязательно заинтересованы в сжатии, это потенциально может решить проблему дешифрования БД при запуске, и тогда вы можете просто записать измененную базу данных обратно в зашифрованный файл.

@ CommonsWare абсолютно прав в том, что вставка пароля / ключа в ваше приложение означает, что кто-то, кто действительно хотел, мог получить ваши данные. Тем не менее, я думаю, что это помешает большинству людей использовать ваши данные тривиальными способами.

0 голосов
/ 31 июля 2013

Попробуйте SQLCipher для шифрования базы данных.

0 голосов
/ 26 января 2012

Если вам нужно зашифровать базу данных, вы, вероятно, используете вход в свое приложение для безопасности, верно? Почему бы вашему серверу входа не сохранять ваш «секретный код» для шифрования, а после входа извлекать «секретный код» и сохранять код (в общедоступной строке, а не в реальном файле или настройке). Таким образом, если кто-то декомпилирует ваше приложение, он все равно не сможет расшифровать данные, и ваши данные будут в безопасности.

Тогда используйте:

Вкл. Destroy() для очистки кода при каждой выгрузке приложения.

0 голосов
/ 09 апреля 2010

Вы можете попробовать запись в SHA1

public static String encriptSHA1(String password){
        String hash = "";

        try {
            MessageDigest md;
            byte[] buffer, digest;

            buffer = password.getBytes();
            md = MessageDigest.getInstance("SHA1");

            md.update(buffer);
            digest = md.digest();

            for(byte aux : digest) {
                int b = aux & 0xff;
                if (Integer.toHexString(b).length() == 1) hash += "0";
                hash += Integer.toHexString(b);
            }
        } catch (NoSuchAlgorithmException e) {
        }

        return hash;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...