我正在尝试转换私钥文件的输入流。此文件包含byte[]
类型的私钥,这在我的文件系统中存在。这就是我将其作为流阅读的方式:
File file = new File("/home/user/Desktop/user(4).key");
oldPrivateKey = new FileInputStream(file);
这就是我试图将私钥流转换为它的对象类型的方法。
public PrivateKey getPrivateKeyObject(InputStream privateKey) throws EmprisException
{
PrivateKey privateKeyObject = null;
byte[] privateKeyBytes;
try {
privateKeyBytes = IOUtils.toByteArray(privateKey);
PKCS8EncodedKeySpec privateKeySpec = new PKCS8EncodedKeySpec(privateKeyBytes);
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
privateKeyObject = keyFactory.generatePrivate(privateKeySpec);
} catch(Exception e){
e.printStackTrace();
}
return privateKeyObject;
}
这就是我得到的错误:
java.security.InvalidKeyException: IOException : Short read of DER length
这条消息可能是什么原因? 非常感谢您的帮助和提前感谢。