我将所有配置设置为UTF-8,但是在Intellij无法识别RSA加密结果之后。
以下是我的设置:
这是实际的加密文本:
getRSA().init(Cipher.ENCRYPT_MODE, readPublicKey());
return new String(getRSA().doFinal(token.getBytes("UTF-8")));
我也在pom.xml中设置
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
以及命令行参数:
-Dfile.encoding=UTF-8
可能是什么原因?
答案 0 :(得分:5)
您尝试将任意二进制数据视为UTF-8编码文本。不是。它只是任意的二进制数据。您正在做的就像尝试将图像或音乐文件表示为文本一样 - 它只是不是文本......
您应该使用Base64将其转换为字符串(例如使用this public domain library)。有关为何需要这样做的更多背景信息,请参阅Marc Gravell's blog post on IO issues。
请注意,这肯定是不一个Intellij问题 - 这是您对数据采取的方法的问题。