字节数组使用谷歌tink流编码问题

时间:2018-06-05 06:17:29

标签: java character-encoding tink

我正在尝试加密string并使用Google's Tink库。 当我调用方法encrypt时,加密的字符串返回类似\<Ï~ß¾Ò0ÑP[oxRæ±E*;ÑRÂÉD«Øô§½:î的内容。我尝试了Base64.DEFAULTUTF-8 ISO-8859-1US-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 :(得分:0)

如果您需要加密方法的二进制输出作为字符串,您可以使用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);

...