我在Microsoft SQL Server数据库中存储了一个JKS密钥库。它以varbinary格式存储,并另存为(例如)0x539A" - a very long varbinary. The data was loaded using
OPENROWSET(BULK'location',SINGLE_BLOB)格式。
当我在结果集上执行以下操作时:
InputStream is = new ByteArrayInputStream(keys);
keyStore.load(is, ksPassword.toCharArray());
我正在例外:
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)
我不确定如何转换字节流,使其看起来像“ [B @ sdfsfs””,因为这是某些其他键的字节流的样子。有人有什么建议吗?
最佳答案
我通过使用CONVERT(varbinary(max), '0x0EB882727A', 1)
解决了该问题-已正确加载。密码是问题所在。
关于java - Java keystore -当varbinary存储为0x时无法加载 keystore ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56993229/