Если по какой-либо причине вы хотите зашифровать изображения на своем Android, библиотека безопасности Jetpack — это то, что вам нужно!

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

Где исходный код?



tl;dr

Библиотека безопасности Jetpack позволяет вам шифровать и расшифровывать файлы в вашем приложении. Это относится и к файлам изображений. Следует отметить, что эта версия библиотеки (1.1.0-alpha03) в настоящее время поддерживает только уровень API ≥ 23.

Если вы запустите приложение из этой статьи, вы получите следующий результат:

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

Однако, если вы откроете зашифрованное изображение (как показано на изображении ниже), вы увидите, что оно было зашифровано и не может быть открыто обычным приложением для просмотра изображений.

Пошаговое объяснение

Следуйте инструкциям ниже, чтобы создать простое приложение.

1. Откройте Android Studio. Создайте новый проект с опцией «Пустая активность». Установите минимальный SDK на API 23.

2. Добавьте библиотеки security и activity в файл app/build.gradle. Нам нужна библиотека activity, чтобы разрешить выбор изображений с пользовательского устройства. Вот как это выглядит:

3. Сначала сделаем макет. Обновите main_activity.xml, как показано в коде ниже. Как видите, макет состоит из двух кнопок и двух ImageView. Это приложение работает следующим образом: первый пользователь выбирает изображение, нажав кнопку «Выбрать изображение». А затем пользователь нажимает кнопку «Прочитать изображение», чтобы отобразить ранее выбранное изображение в двух версиях: оригинальной и зашифрованной.

4. Наконец, мы обновим файл MainActivity.kt. Вы можете скопировать и вставить приведенный ниже код, но вот как это работает в основном: сначала мы инициализируем MasterKey для шифрования, средство выбора изображений и прослушиватель кнопок. И в этих прослушивателях мы добавляем логику для шифрования и дешифрования изображения с помощью API-интерфейсов библиотеки безопасности Jetpack. Обратите внимание, что основным классом здесь является EncryptedFile. Он работает аналогично обычному объекту File, в котором у вас будет доступ к объектам InputStream и OutputStream.

5. И все! Итак, вы создали приложение, которое по какой-то причине шифрует изображение.

Спасибо за чтение!