Если по какой-либо причине вы хотите зашифровать изображения на своем 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. И все! Итак, вы создали приложение, которое по какой-то причине шифрует изображение.
Спасибо за чтение!