1

我正在尝试加密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");
...
4

1 回答 1

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);

...
于 2018-06-06T01:42:44.950 回答