Как зашифровать json файл android java
Перейти к содержимому

Как зашифровать json файл android java

  • автор:

Редактор кода

Рассмотрим возможности редактора кода при написании приложений.

Инъекция языка

Студия позволяет делать инъекцию в существующий код. Что это такое? Например, JSON имеет свой формат данных. Если писать код вручную в данном формате, то можно столкнуться с неудобствами — вам приходится экранировать символы в большом фрагменте кода. Студия поможет нам. Создадим переменную jsonString:

 String jsonString = ""; 

Помещаем курсор между кавычками и нажимаем комбинацию Alt + Enter , выбираем пункт Inject language or reference, в выпадающем списке выбираем JSON (JSON files).

JSON Injection

Далее следует ещё раз нажать комбинацию Alt + Enter , чтобы инъекция была постоянной. Студия добавит комментарий к переменной.

 //language=JSON 

Если вы скопируете текст в формате JSON и вставите его между кавычками, то экранирование произойдёт автоматически.

 // скопировать в буфер обмена // после вставки в код между кавычками String jsonString = ""; 

Сам текст не обязательно копировать из другого источника, можете создавать JSON-запись в самой студии. Снова нажимаем Alt + Enter и выбираем пункт Edit JSON Fragment. Появится новая панель, в котором вы можете набирать текст, а в редакторе кода будет выводиться валидный код для работы.

JSON Injection

Аналогично можно работать с регулярным выражением.

JSON Injection

Перемещаем метод вверх или вниз

Иногда хочется для лучшей читаемости поменять местами методы в коде. Вырезать и вставлять в новое место слишком утомительно. Есть способ лучше. Установите указатель мыши на имени метода и нажмите комбинацию Ctrl+Shift+Стрелка_Вверх — метод автоматически перепрыгнет через метод над собой. Как переместить вниз вы сами догадаетесь.

Сворачиваем фрагменты кода

Студия умеет сворачивать фрагменты кода, которые являются структурной единицей, например, метод. Щёлкнув по фиговине (как это называется?), вы убираете код, чтобы не мозолил вам глаза.

collapse method

Но мало кто знает, что свернуть можно любой свой код. Для этого ставим два слеша, как в комментариях, а затем добавляем слово region (без пробела) и через пробел название блока. Это будет началом блока. Конец блока обозначаем через //endregion

 //region Коты private String mCatName1 = "Мурзик"; private String mCatName2 = "Васька"; private String mCatName3 = "Рыжик"; private String mCatName4 = "Барсик"; //endregion 

Теперь отмеченный блок можно сворачивать. Наведите порядок у себя в коде.

region

region

Редактор кода для XML в режиме Text

[I18N] Hardcoded string

Когда вы редактируете код разметки экрана активности, то можете встретить предупреждение [I18N] Hardcoded string «Какой-то ваш текст», should use @string resource.

[I18N] Hardcoded string

Студия информирует вас о возможной проблеме, если вы в будущем задумаетесь о локализации приложения. Странное выражение I18N переводится очень просто. Здесь зашифровано слово INTERNATIONALIZATION — первая буква I, последняя буква N и восемнадцать букв между ними.

Вам нужно заменить свой жёстко закодированный текст на строковый ресурс. Установите курсор внутри текста, нажмите комбинацию клавиш Alt+Enter и выберите пункт Extract string resource. Далее в диалоговом окне придумываете имя для ресурса и выбираете файл для хранения (обычно, strings.xml).

Предположим, вы заменили везде текст на строковые ресурсы и решили отредактировать текст у кнопки. Снова ставим курсор на нужном тексте и нажимаем комбинацию клавиш Ctrl+B, у вас сразу откроется файл strings.xml и не надо его искать в дереве проекта.

Ещё один приём — если вы хотите видеть вместо кода android:text=»@string/click» реальный текст из ресурса, то нажмите комбинацию Ctrl+- (клавиша минус на цифровой клавиатуре) и он подтянется.

Вкладки

Каждый файл проекта открывается в собственной вкладке. Вкладки можно менять местами перетаскиванием с помощью мыши. Переключаться можно через клавиши Alt-стрелка влево и Alt-стрелка вправо. Также можно вызвать Switcher с помощью комбинации Ctrl+Tab.

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

Если имя файла на вкладке подчёркнуто красной волнистой линией, значит в коде содержится ошибка и не нужно запускать программы, то время потеряете. Сначала исправьте ошибку.

Editor

Вкладку можно «отстегнуть». Нажмите на вкладку и удерживая мышку, перетащите вкладку на рабочий стол. Также её можно вернуть обратно.

Каждая вкладка имеет контекстное меню и значок для закрытия. Изучите пункты меню самостоятельно. Например, можно разбить редактор кода на две части (по вертикали или горизонтали), чтобы видеть разные участки кода одновременно.

Строка состояния

В нижней части студии находится строка состояния. В нижнем правом углу имеется текстовая метка с информацией о текущем местоположении курсора в документе (номер строки:номер символа). Если подвести мышку к надписи, то можно увидеть всплывающую подсказку Click to go to line. Щелчок вызовет диалоговое окно для быстрого перехода на нужную позицию.

Рядом также имеется текстовая метка с указанием кодировки, в которой пишется код. В последних версиях студии это стало проблемой для русскоязычных программистов. Студия может использовать системную кодировку, которая часто бывает windows-1551, но в Android принято использовать UTF-8, и после запуска приложения вместо текста можно увидеть кракозябры.

Остальные элементы не представляют интереса.

Информационный желоб

Слева от редактора кода имеется отдельная полоска, которую я назвал информационным желобом. На ней можно увидеть различные значки. Например, у класса MainActivity выводится значок, связанный XML-разметкой для данного класса. Нажав на него, вы можете быстро открыть нужный XML-файл.

Также выводятся значки для методов. Каждый тип методов имеет свой цвет.

В данном желобе устанавливаются точки останова (breakpoint).

Доступно контекстное меню. Например, можно выбрать показ номеров строки.

На границе желоба и редактора кода имеются маркеры для сворачивания блоков кода.

Если нажать клавишу F11, то текущая строка будет помечена как закладка и появится галочка.

Анализ кода

Справа от редактора кода находится анализатор кода. Если код содержит ошибки, сверху будет гореть красный прямоугольник. Если ошибок нет, но есть предупреждения, то будет гореть жёлтый прямоугольник. При правильном коде горит зелёный прямоугольник.

В случае ошибок или предупреждений также выводятся зарубки. Если подвести к ним курсор мыши, то можно прочитать сообщение или сразу перейти в нужную строку для исправления, нажав на неё. Также есть синие зарубки для выделенных слов и задач TODO.

Editor

Автодополнение кода

Студия поддерживает автодополнение кода, когда по первым символам подставляет нужные слова. Распространяться на эту тему не буду.

Основная комбинация Ctrl+Space.

Если написать имя метода, например, «private void onClick()» и нажать комбинацию Ctrl+Shift+Enter, то студия сгенерирует фигурные скобки.

Когда у вас есть кусок кода и вы начинаете исправлять его, то возникает следующая ситуация. Студия предлагает подсказку, вы соглашаетесь и нажимаете Enter.

Editor

В данном случае мы хотим заменить переменную name на catName, но если нажмём на Enter, то подсказка присоединится к старому коду и мы получим catNamename. В следующий раз нажимайте на клавишу Tab и тогда старый вариант заменится на новый.

Также изучите другие клавиатурные комбинации.

Периодически используйте команды меню Code: Reformat Code и Rearrange Code. Первая команда полезна для Java-кода, а вторая для XML-разметки. Код станет аккуратнее.

Перевод на новую строку

Если курсор находится в середине выражения и вы хотите начать новую строку, не обязательно гнать курсор в конец строки. Просто нажмите комбинацию Shift+Enter.

Как хранить секретный json файл в android?

Есть мобильное приложение, в нем json файлик который не должен быть доступен в ресурсах каждому кто распаковал apk как архив. В swift я это решил положив json в виде строки в свойство и это отлично работает.

var json = “”” “”” 

В котлине я получил ошибку

 “Back-end (JVM) Internal error: wrong bytecode generated for static initializer” 

Оказалось что переменная при инициализации не может быть больше 80 кб. Как бы вы решили проблему хранения секретного json на котлин/андройд? Хранить файл в ресурсах в зашифрованном виде не подходит в силу того что этот json нужно часто редактировать. И каждый рад его шифровать с помощью сторонней утилиты будет не совсем удобно.

Отслеживать
user2168735
задан 19 ноя 2019 в 10:10
user2168735 user2168735
327 2 2 серебряных знака 12 12 бронзовых знаков

Ресурсы не редактируются — вам по-любому придётся писать этот json в файл. Поэтому шифрование ресурса на сохранение в рантайме не влияет. С другой стороны сам файл будет доступен юзеру на рутированных устройствах — и его по-любому придётся шифровать, если этот факт вас не устраивает

19 ноя 2019 в 13:07

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

Для начала я бы смирился с тем, что вы не можете гарантировать сохранность данных, которые кладете в apk. Если действительно захотеть — все будет вытащено, т.к. нет и вряд ли в ближайшие годы будет возможность прятать хотя бы ключи шифрования. Вам остается только создавать для потенциальных злоумышленников такой уровень сложности задачи, чтобы ее тратить силы на ее решение стало нецелесообразно. Могу предложить следующий путь:

  1. json шифруем. Можете сами покопаться с шифровкой байтовых массивов, можете просто засунуть файл в запароленный zip-архив. В android с ним работать весьма просто. Результат шифрования кладем в ресурсы, в assets или raw, например. Не забываем про соль
  2. засовываете пароль/ключ в программу. Прячете всеми правдами и неправдами. Дробите на части, преобразуете побитовыми операторами, используете полиморфизм чтобы скрыть получение данных
  3. используете proguard, хотя бы на стандартной конфигурации

Этого уже достаточно, чтобы заставить человека, пытающегося что-то вытащить из вашей программы, сдаться на первых шагах. Правда если на первых шагах он не сдастся, то рано или поздно все равно разберется что к чему и увидит ваш json.

Это, так скажем, программа минимум. Есть еще способы сокрытия, но их предпочитают не особо разглашать, т.к. если способ становится общеизвестным — он перестает работать

PS Со swift я не работал и не знаю как там устроено хранение ресурсов, но не вижу причин думать, что там хранение секретных данных в зашитых строках более безопасно, чем в kotlin/java. Сохранили строку в виде литерала = сделали ее легкодоступной

Как программно шифровать данные на Andriod?

Надо шифровать определенные данные. Если ключ и данные сохранять на устройстве — взломают без проблем.

Была мысль результат шифрования сохранять на устройстве, а ключ передавать на сервер. Но злоумышленник может декомпилировать приложение и посмотреть что откуда берется — то же не вариант.

Была мысль использовать в качестве ключа какой-либо пин-код (чтоб юзер вводил каждый раз) — но это обычно 4-6 цифр — там перебором элементарно вычислить.

Поэтому встает вопрос: можно ли надежно зашифровать и хранить данные на устройстве, так, чтоб при рут-достпе к устройству злоумышленник не мог расшифровать?

  • Вопрос задан более трёх лет назад
  • 1001 просмотр

3 комментария

Оценить 3 комментария

Просмотр JSON онлайн через Android или бесплатное онлайн-приложение

GroupDocs.Viewer Cloud — это облачная служба просмотра и рендеринга документов для JSON. Он позволяет пользователям отображать и просматривать различные форматы документов, включая PDF, Microsoft Word, Excel, PowerPoint и другие, в своих приложениях или на веб-сайтах. Это избавляет пользователей от необходимости устанавливать дополнительное программное обеспечение или плагины для просмотра документов.

С помощью GroupDocs.Viewer Cloud пользователи могут получить доступ к таким функциям, как масштабирование, разбиение по страницам, поиск и выделение текста в отображаемых документах. Он поддерживает параметры рендеринга, позволяя пользователям указывать определенные страницы для рендеринга, создавать миниатюры документов или даже рендерить документы в виде изображений.

Служба предоставляет REST API и SDK, которые разработчики могут использовать для интеграции GroupDocs.Viewer Cloud в свои приложения или веб-сайты. Эти API доступны для разных языков программирования и платформ, что позволяет разработчикам легко реализовывать возможности просмотра документов в нужных им средах.

GroupDocs.Viewer Cloud упрощает процесс просмотра документов и рендеринга файлов JSON, обеспечивая плавную интеграцию функций просмотра документов в различные приложения или веб-сайты.

Скопировано!

Просмотр файла JavaScript Object Notation File (JSON) через Android

Просмотр JSON и других популярных форматов бесплатно

Как просмотреть файл JSON онлайн

  • Выберите файл, нажав на приложение JSON, или просто перетащите файл JSON.
  • Нажмите кнопку Открыть, чтобы загрузить и просмотреть файл JSON.
  • Это все! Вы можете просмотреть документ JSON онлайн.

Часто задаваемые вопросы

Какие функции предлагает GroupDocs.Viewer Cloud?

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

Я хочу создать собственное приложение, которое может просматривать файл JSON онлайн?

Проверьте наши Cloud SDK на GitHub, если вы ищете исходный код для просмотра формата файла JSON в облаке.

Как я могу интегрировать GroupDocs.Viewer Cloud в свое приложение?

Интеграция осуществляется через API, предоставляемые GroupDocs.Viewer Cloud. Сервис предлагает API для разных языков программирования и платформ, что позволяет разработчикам легко включать возможности просмотра документов в свои приложения или веб-сайты.

Существуют ли какие-либо ограничения или ограничения на использование GroupDocs.Viewer Cloud?

GroupDocs.Viewer Cloud имеет определенные ограничения на использование в зависимости от выбранного вами плана подписки. Эти ограничения могут включать количество запросов API, размер документа или количество одновременных подключений. Рекомендуется ознакомиться с ценами и планами, чтобы понять конкретные ограничения.

Могу ли я попробовать онлайн-просмотрщик JSON бесплатно?

Облачное приложение GroupDocs.Viewer является полностью бесплатным. Вы можете просмотреть любое количество JSON и других файлов. Если вы разработчик и хотите добавить эту функцию в свое собственное приложение, вы можете попробовать GroupDocs.Viewer Low-Code API без каких-либо ограничений.

Я не хочу никуда загружать свои конфиденциальные файлы JSON? Каковы мои варианты?

GroupDocs.Viewer Cloud также доступен в виде образа Docker, который можно использовать для [самостоятельного размещения] (https://purchase.groupdocs.cloud/self-hosting) сервиса. Или вы можете создавать свои собственные сервисы, используя API с высоким кодом GroupDocs.Viewer, которые в настоящее время поддерживают как бесплатное приложение JSON Viewer, так и API REST.

Какие форматы документов поддерживает GroupDocs.Viewer Cloud?

GroupDocs.Viewer Cloud поддерживает широкий спектр форматов документов, включая PDF, Microsoft Word (DOC, DOCX), Excel (XLS, XLSX), PowerPoint (PPT, PPTX), изображения (JPEG, PNG, GIF, TIFF) и другие. .

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *