[英]JAVA - How to store and read an RSA public key from an sqlite db
我必须将公钥和私钥存储到sqlite数据库中。 实际上我将pubKey.getEncoded()写入数据库,并重新创建pubkey我使用以下代码:
ResultSet result = stat.executeQuery("select publickey from cert where id='1'"); KeyFactory rsaKeyFac = KeyFactory.getInstance("RSA"); X509EncodedKeySpec keySpec = new X509EncodedKeySpec(result.getBytes(1)); RSAPublicKey pubKey; pubKey = (RSAPublicKey) rsaKeyFac.generatePublic(keySpec);
但它给了我以下错误
线程“main”中的异常java.security.spec.InvalidKeySpecException:java.security.InvalidKeyException:IOException:检测过早的EOF
这一点 :
pubKey =(RSAPublicKey)rsaKeyFac.generatePublic(keySpec);
有人可以帮帮我吗?
先感谢您
如果您在这里查看: http : //java.sun.com/docs/books/tutorial/jdbc/basics/retrieving.html您将看到如何从数据库中正确检索。 假设您的数据库列有一个char(n)类型。
ResultSet result = stat.executeQuery("select publickey from cert where id='1'");
while(result.next())
{
KeyFactory rsaKeyFac = KeyFactory.getInstance("RSA");
X509EncodedKeySpec keySpec = new X509EncodedKeySpec(result.getString(1));
RSAPublicKey pubKey;
pubKey = (RSAPublicKey) rsaKeyFac.generatePublic(keySpec);
}
如果类型是BLOB或CLOB,那么您需要使用不同的机制。 http://java.sun.com/j2se/1.5.0/docs/guide/jdbc/blob.html
首次获取ResultSet时,光标指向第一行结果前的空格。 所以你需要在尝试检索数据之前调用next()。
您应确保查询实际成功。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.