Android и Java предоставляют криптографический API , который относительно легко использовать для неспециалистов в области криптографии.
] Но поскольку мы знаем, что никакой код на самом деле не может быть защищен от реверс-инжиниринга, особенно строковые константы, используемые как начальные числа или общие секреты, мне интересно: какой смысл проходить через испытания шифрования и дешифрования в приложениях Android?
Я что-то упускаю?
Пытаюсь сделать свой вопрос более ясным и конкретным: Предположим, у меня есть приложение, в котором определенные строки использовали с помощью кода и в кода (т.е. , а не пользовательские данные) должны быть секретными: один из подходов состоит в том, чтобы хранить их в зашифрованном виде в скомпилированном .apk
и расшифровать их (используя запутанный жестко закодированный пароль) по адресу время выполнения. Другой подход - хранить их в зашифрованном виде на удаленном сервере, получать их (через Интернет) и расшифровывать (используя общий пароль) во время выполнения.
Я не вижу большой разницы между ними, поскольку оба требуют наличия «секретного ключа» в коде (с возможностью обратного проектирования).
Есть ли решение этой проблемы?
Если решения нет, зачем вообще шифрование?