Android studio как зашифровать файлы

Я не разбираюсь в криптографии и статья выложена только для ознакомления.

Android имеет в своём составе пакет javax.crypto с классами, которые отвечают за шифрование, дешифрование, ключи и т.п. Если вы занимались этой темой в Java, то многое будет знакомо. Поддерживаются популярные алгоритмы AES и RSA.

Список провайдеров

Для начала получим список провайдеров и поддерживаемые ими сервисы и алгоритмы.

Код по щелчку кнопки

Симметричное шифрование AES

Популярный алгоритм симметричного шифрования Advanced Encryption Standard (AES).

Зададим тестовую строку, зашифруем и расшифруем её.

Весь процесс происходит в методе onCreate():

Ассиметричное шифрование RSA

Разметку оставляем без изменений. Используем другой алгоритм RSA:

Я хочу зашифровать изображение с SD-карты и снова сохранить его на SD-карте с помощью AES. Основная идея заключается в том, что приложение просматривает изображение, а затем шифрует его, когда я нажимаю кнопку, а затем сохраняю ее на SD-карте. Поэтому мое изображение будет безопасным.

Мне уже удалось выполнить строковое шифрование с использованием AES из этого учебника http://www.androidsnippets.com/encryptdecrypt-strings , но у меня нет идеи, как это сделать с изображением, а не с строкой.

Вот как я делаю это со строкой:

Может ли кто-нибудь помочь мне привести пример кода, как зашифровать изображение с помощью AES?

Возможно, он должен использовать поток файлов ввода-вывода, но у меня нет идеи, как реализовать этот код.

Если вы берете пользовательский ввод пароля, обязательно прочитайте этот ответ .

Вы должны взглянуть на: CipherInputStream и CipherOutputStream . Они используются для шифрования и дешифрования байтовых потоков.

У меня есть файл с именем cleartext . Файл содержит:

Читайте также:  Чем отличаются вакуумные наушники от обычных

Теперь у вас есть функция encrypt() :

После выполнения этой функции должны быть encrypted имена файлов. Файл содержит зашифрованные символы.

Для дешифрования у вас есть функция decrypt :

После выполнения дешифрования должен быть файл с decrypted . Этот файл содержит свободный текст.

Вы пишете, что вы «noob», но в зависимости от прецедента шифрования вы можете нанести большой вред, если не делаете это правильно. Знай свои инструменты!

Использование документации CipherOutputStream Oracle :

Таким образом, шифрование должно работать. Когда вы меняете процесс, вы должны иметь возможность читать дешифрованные байты.

пример

В следующем примере шифруется данный блок данных с использованием AES . Ключ шифрования выведен безопасным способом (случайная соль, 1000 раундов SHA-256). Шифрование использует AES в режиме CBC со случайным IV .

Обратите внимание, что данные, хранящиеся в классе EncryptedData ( salt , iv и encryptedData ), могут быть объединены в один массив байтов. Затем вы можете сохранить данные или передать их получателю.

Следующий пример кода показывает, как тестировать шифрование и дешифрование: