java - Java Keystore - 当 varbinary 存储为 0x 时无法加载密钥库
问题描述
我有一个存储在 Microsoft SQL 服务器数据库中的 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)
- 它已正确加载。密码是问题所在。
推荐阅读
- jquery - 如何在获取 jQuery Datatable 上的记录时显示加载图像?
- php - 当我单击编辑按钮时,编辑表单中没有显示此错误
- vba - vba转换公式的值
- mockito - Mockito 方法调用
- php - 我想让 php 继续监听套接字(php 套接字编程)
- wso2 - 无法为 ssl://10.10.183.27:9714 借用客户端。org.wso2.carbon.databridge.agent.exception
- visual-studio - 在 vs 代码上使用 ftp-simple 下载远程文件
- vba - .End(xlUp).row 走得太远了
- adodb - sql加入两个foxpro表
- shell - 为什么在 shell 脚本中运行时游标语句在 isql(sybase) 中不起作用