如何将Java证书文件写入Json字符串字段?
我正在尝试生成一个JSON文件,其中包含传输和在另一个系统上执行进一步操作所需的所有信息。其中一个字段是java证书。因为我只需要在另一个系统上复制文件的内容,所以我认为直接读取内容然后写入文件就可以了。但在加载新编写的文件时,我得到:
Caused by: java.io.IOException: Invalid keystore format
at sun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.java:658)
at sun.security.provider.JavaKeyStore$JKS.engineLoad(JavaKeyStore.java:56)
at sun.security.provider.KeyStoreDelegator.engineLoad(KeyStoreDelegator.java:224)
at sun.security.provider.JavaKeyStore$DualFormatJKS.engineLoad(JavaKeyStore.java:70)
at java.security.KeyStore.load(KeyStore.java:1445)
这样做的正确方法是什么
目前,为了阅读我使用的原始证书:
FileUtils.readFileToString(originalTrustFile);
要编写我正在使用的新文件,请执行以下操作:
FileUtils.writeByteArrayToFile(trustFile, trustJsonContent.getBytes());
# 1 楼答案
尽管在一些JSON文件中嵌入密钥库的想法对我来说很奇怪,但下面您可以找到一种将二进制数据作为字符串放入JSON字段或从JSON字段中检索二进制数据的正确方法
与您最初的方法相反,上面的方法将生成保证安全的字符串,该字符串不会干扰JSON保留符号,因此在转义或反序列化时不会损坏
注意1:对于Java 7和更早版本,您需要在类路径中使用apache commons编解码器库,并使用非常类似的
org.apache.commons.codec.binary.Base64
。请咨询javadoc如何使用它,请参阅方法encodeBase64String(byte[])
和decodeBase64(String)
注意2:Base64 format会使二进制数据的初始大小增加+33%的开销,因此对于相当大的文件必须谨慎使用