Для зашифрованного текста в потоке не найден соответствующий ключ. Исключение.Android

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Для зашифрованного текста в потоке не найден соответствующий ключ. Исключение.

Сообщение Anonymous »

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

Код: Выделить всё

  MasterKey masterKey = null;
try {
masterKey = new
MasterKey.Builder(context, MasterKey.DEFAULT_MASTER_KEY_ALIAS)
.setKeyScheme(MasterKey.KeyScheme.AES256_GCM)
.build();
} catch (GeneralSecurityException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
Я зашифровал свой текстовый файл Sample.txt и записал зашифрованный файл на внешнее хранилище устройства. Код приведен ниже.

Код: Выделить всё

   InputStream inputStream = new BufferedInputStream(appCtx.getAssets().open("Sample.txt"));
byte[] fileBytes=new byte[inputStream.available()];
inputStream.read(fileBytes);
File file = new File(Environment.getExternalStorageDirectory(), "Sample.txt");
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
EncryptedFile encryptedFile = new EncryptedFile.Builder(
appCtx,
file,
masterKey,
EncryptedFile.FileEncryptionScheme.AES256_GCM_HKDF_4KB
).build();
OutputStream outputStream = encryptedFile.openFileOutput();
outputStream.write(fileBytes);
outputStream.flush();
outputStream.close();
Я поместил зашифрованный файл в папку ресурсов и теперь пытаюсь расшифровать, но согласно документации EncryptedFile.Builder всегда имеет объект файла в качестве параметра, и в настоящее время у меня есть входной поток после чтения файла из актива. Итак, чтобы получить объект файла, я записываю этот входной поток во внешнее хранилище как Temp.txt и передаю этот файл для расшифровки. Но я получаю исключение как java.io.IOException: нет соответствующего ключа найден для зашифрованного текста в потоке.
Код для расшифровки следующий:

Код: Выделить всё

   InputStream myInputstream = new BufferedInputStream(appCtx.getAssets().open("Sample.txt"));
File enfile = createFileFromInputStream(myInputstream,appCtx);
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
EncryptedFile encryptedFile = new EncryptedFile.Builder(
appCtx,
enfile,
masterKey,
EncryptedFile.FileEncryptionScheme.AES256_GCM_HKDF_4KB
).build();
InputStream inputStream1 = encryptedFile.openFileInput();
BufferedOutputStream os1 = new BufferedOutputStream( new FileOutputStream(new File(dstPath)));
int length = 0;
byte[] buffer = new  byte[1024];
while ((length = inputStream1.read(buffer)) != -1) {
os1.write(buffer, 0, length);
}
os1.close();
}

private static File createFileFromInputStream(InputStream stream, Context context) {
File f = new File(Environment.getExternalStorageDirectory(), "Temp.txt");
BufferedOutputStream os1 = null;
try {
os1 = new BufferedOutputStream( new FileOutputStream(f));
int length = 0;
byte[] buffer = new  byte[1024];
while ((length = stream.read(buffer)) != -1) {
os1.write(buffer, 0, length);
}
os1.close();
stream.close();
return f;
} catch (FileNotFoundException e) {
e.printStackTrace();
}catch (IOException e) {
//Logging exception
}

return null;
}
Основной сценарий:
Если записать зашифрованный файл на внешнее хранилище и прочитать его для расшифровки непосредственно из внешнего хранилища, то все будет рабочим файлом. Но если я вставляю зашифрованный файл в папку ресурсов и записываю входной поток, полученный из папки ресурсов, в какой-то временный файл, а затем пытаюсь расшифровать его, выдается ошибка java.io.IOException: для зашифрованного текста в потоке не найден соответствующий ключ.< /strong>
Пожалуйста, помогите мне с этой проблемой.
Спасибо

Подробнее здесь: https://stackoverflow.com/questions/630 ... -exception
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»