Массив байтов для потоковой кодировки проблемы с использованием Google Tink

Я пытаюсь зашифровать string и используя Google's Tink библиотека. Когда я вызываю метод encrypt и зашифрованная строка возвращает что-то вроде \<Ï~ß¾Ò0ÑP[oxRæ±E*;ÑRÂÉD«Øô§½:î, Я старался Base64.DEFAULT, UTF-8ISO-8859-1, US-ASCI и даже StandarCharset.UTF_8 и подобные кодировки, но ничего не работает. Пожалуйста, помогите, вот фрагмент.

...
KeysetHandle keysetHandle = KeysetHandle.generateNew(AeadKeyTemplates.AES256_GCM);
Aead aead = AeadFactory.getPrimitive(keysetHandle);
byte [] str1 = str.getBytes("UTF-8");
...
byte [] output = aead.encrypt(str1, str2);
String outputStr = new String(output, "UTF-8");
...

1 ответ

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

На практике это будет выглядеть примерно так:

import java.util.Base64;

...

KeysetHandle keysetHandle = KeysetHandle.generateNew(AeadKeyTemplates.AES256_GCM);
Aead aead = AeadFactory.getPrimitive(keysetHandle);
byte [] str1 = str.getBytes("UTF-8");

...

byte [] output = aead.encrypt(str1, str2);
String outputStr = Base64.getEncoder().encodeToString(output);

...
Другие вопросы по тегам