我在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/

10-10 17:23