在Java中解码Base64 JKS信任存储
我已经基于64 JKS信任存储字符串,我正在尝试解码。 当我用它来解码文件时,我得到了一个可下载的文件,其中包含以下详细信息: 当我将此文件与-Djavax.net.ssl.trustStore=文件路径一起使用时,它正在工作 现在,我尝试自己使用Java解码文件并将其写入文件:在Java中解码Base64 JKS信任存储,java,security,truststore,Java,Security,Truststore,我已经基于64 JKS信任存储字符串,我正在尝试解码。 当我用它来解码文件时,我得到了一个可下载的文件,其中包含以下详细信息: 当我将此文件与-Djavax.net.ssl.trustStore=文件路径一起使用时,它正在工作 现在,我尝试自己使用Java解码文件并将其写入文件: byte[] decoded = Base64.getDecoder().decode(data); FileOutputStream fos = new FileOutputStream(new File(baseP
byte[] decoded = Base64.getDecoder().decode(data);
FileOutputStream fos = new FileOutputStream(new File(basePath));
fos.write(decoded);
这样我就得到了不可读的字符,比如���� .
我还尝试将字节数组转换为字符串:
StringBuilder sbHexDump = new StringBuilder();
for (byte b : decoded) {
sbHexDump.append(String.format("%02x", b));
}
通过这种方式,我得到了与我从网站下载的相同的hextump,但没有空格和换行符。
在这两种情况下,我都会得到以下错误:
java.io.IOException: Invalid keystore format
at sun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.java:663)
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)
谢谢你的帮助
这样我就得到了不可读的字符,比如���� .
是的,那又怎样?JKS是一种二进制格式。并非所有字节都映射到可打印字符。只要keytool
能读,你就行了
这样我就得到了不可读的字符,比如���� .
是的,那又怎样?JKS是一种二进制格式。并非所有字节都映射到可打印字符。只要
keytool
可以阅读,您就可以了。除了了解base 64编码方案(),您可能还需要了解有关字节位置的任何大端问题。编码只需取前8位,编码其中6位,将下一个8位连接到剩余的2位,编码其中的6位,将下一个8位连接到剩余的4位,编码其中的6位,然后编码最后的6位。如果在3字节组中点击eof,则有一个=填充系统对其进行编码
唯一的技巧是从正确的一端取位,并将位连接到正确的一端。如果要对二进制非字节数据(如整数)进行编码,则必须知道它们是如何编码的,因为整数的低位字节可能分别为低位字节或高位字节的第1或第4字节编码
添加空格或换行符等只是为了使文本编辑器、屏幕查看、电子邮件发送、人类等更容易接受。除了了解base 64编码方案()之外,您可能还需要了解有关字节位置的任何大端问题。编码只需取前8位,编码其中6位,将下一个8位连接到剩余的2位,编码其中的6位,将下一个8位连接到剩余的4位,编码其中的6位,然后编码最后的6位。如果在3字节组中点击eof,则有一个=填充系统对其进行编码 唯一的技巧是从正确的一端取位,并将位连接到正确的一端。如果要对二进制非字节数据(如整数)进行编码,则必须知道它们是如何编码的,因为整数的低位字节可能分别为低位字节或高位字节的第1或第4字节编码
添加空格或换行符等只是为了让文本编辑器、屏幕查看、电子邮件发送、人类等更容易接受。正如David所建议的,问题是我从文本编辑器打开了“正确”文件,从IntelliJ打开了生成的文件。正如David所建议的,问题是我打开了“正确”文件文本编辑器中的文件和IntelliJ中生成的文件。