байтовый массив для потоковой кодировки проблемы с использованием Google Tink - PullRequest
0 голосов
/ 05 июня 2018

Я пытаюсь зашифровать 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 Ответ

0 голосов
/ 06 июня 2018

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

...
...