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