首页 > 解决方案 > Java Keystore - 当 varbinary 存储为 0x 时无法加载密钥库

问题描述

我有一个存储在 Microsoft SQL 服务器数据库中的 JKS 密钥库。它存储为 varbinary 并保存为(例如)0x539A" - a very long varbinary. The data was loaded usingOPENROWSET(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”,因为这就是其他键的字节流的样子。有人有什么建议吗?

标签: javasql-server-2016keystorevarbinary

解决方案


我通过使用解决了这个问题CONVERT(varbinary(max), '0x0EB882727A', 1)- 它已正确加载。密码是问题所在。


推荐阅读