【发布时间】:2013-12-14 17:39:26
【问题描述】:
我有这个代码:
// Turn the encoded key into a real RSA public key.
// Public keys are encoded in X.509.
X509EncodedKeySpec keySpec = new X509EncodedKeySpec(keyBytes);
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
PublicKey publicKey = keyFactory.generatePublic(keySpec);
错误:
java.security.spec.InvalidKeySpecException: java.security.InvalidKeyException: IOException: 检测过早的 EOF
问题出在哪里?
【问题讨论】:
-
你从哪里得到
keyBytes? -
从此代码: File f = new File("C:/Users/Joe/Desktop/joesaab.txt"); try{ FileInputStream fis = new FileInputStream(f); ByteArrayOutputStream baos = new ByteArrayOutputStream(); int theByte = 0; while ((theByte = fis.read()) != -1) { baos.write(theByte); } fis.close(); byte[] keyBytes = baos.toByteArray(); baos.close(); System.out.println("pub 和 priv 完成.. 编码开始!");
-
文件是否存在?您是否正确拼写了它的路径和名称?
keyBytes的内容是什么?看起来合理吗?或者它只是一个空字符串或什么?你在哪里捕捉到来自try块的异常,它捕捉到了什么有趣的东西吗? -
文件和路径正确且存在,在我的代码中我需要使用 RSA 加密文本文件。我认为问题出在 keyspecs 中。
-
文件
joesaab.txt是什么?是要加密的文本还是密钥? (Java 认为你想用它作为键。)
标签: public-key-encryption x509