Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用google tink的字节数组到流编码问题_Java_Character Encoding_Tink - Fatal编程技术网

Java 使用google tink的字节数组到流编码问题

Java 使用google tink的字节数组到流编码问题,java,character-encoding,tink,Java,Character Encoding,Tink,我正在尝试加密字符串,并使用谷歌的Tink库。 当我调用方法encrypt时,加密的字符串返回类似\的内容,如果您需要加密方法的二进制输出作为字符串,您可以使用它进行编码 实际上,它看起来像: import java.util.Base64; ... KeysetHandle keysetHandle = KeysetHandle.generateNew(AeadKeyTemplates.AES256_GCM); Aead aead = AeadFactory.getPrimitive(ke

我正在尝试加密
字符串
,并使用
谷歌的Tink
库。
当我调用方法
encrypt
时,加密的字符串返回类似
\的内容,如果您需要加密方法的二进制输出作为字符串,您可以使用它进行编码

实际上,它看起来像:

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

...

那么,你会期待什么呢?在大多数情况下,将随机字节数组(如大多数加密算法的结果)转换为字符串没有意义……加密的结果是二进制数据。不能使用字符编码将其转换为字符串。如果要将其作为文本传输,则需要使用用于二进制数据的内容,例如十六进制输出或base64输出。但你必须先问问自己是否需要将其作为文本传输——为什么不将其作为二进制数据传输?@ErwinBolwidt我需要文本来存储它,以备将来使用。你能提出一些建议吗?我想我刚才在上面的评论中提到过。
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);

...