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