2013-12-14 74 views
0

我有这样的代码:java.security.spec.InvalidKeySpecException:java.security.InvalidKeyException:IOException异常:早产检测EOF

// 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: Detect premature EOF

问题出在哪里?

+0

你从哪里得到'keyBytes'? –

+0

从这段代码:File f = new File(“C:/Users/Joe/Desktop/joesaab.txt”); 尝试FileInputStream fis = new FileInputStream(f); ByteArrayOutputStream baos = new ByteArrayOutputStream(); int theByte = 0; ((theByte = fis.read())!= -1) { baos.write(theByte); } fis.close(); byte [] keyBytes = baos.toByteArray(); baos.close(); System.out.println(“pub和priv done ..编码开始!”); – user3077162

+0

该文件是否存在?你拼写正确的路径和名称? 'keyBytes'的内容是什么?它看起来合理吗?或者它只是一个空字符串或什么的?你在哪里捕捉'try'块的异常,并且捕捉到什么有趣的东西? –

回答

1
public static PublicKey getPublicKey(String key) throws Exception {byte[] keyBytes; 
     keyBytes = (new BASE64Decoder()).decodeBuffer(key); 
     X509EncodedKeySpec keySpec = new X509EncodedKeySpec(keyBytes); 
     KeyFactory keyFactory = KeyFactory.getInstance("RSA"); 
     PublicKey publicKey = keyFactory.generatePublic(keySpec); 
     return publicKey; 
    } 

这是我如何把“钥匙串”到真正的RSA密钥(公钥公钥)。 也许有帮助。