Я пытаюсь подписать строковое сообщение, используя закрытый ключ, который я сгенерировал с помощью команд из здесь .Ниже приведен фрагмент кода, который я использую для загрузки и подписания сообщения.
private String signMessage(String message) throws Exception {
Signature rsa = Signature.getInstance("SHA1withRSA");
rsa.initSign(getPrivate(privateKeyPath));
rsa.update(message.getBytes());
return rsa.sign().toString();
}
public PrivateKey getPrivate(String filename) throws Exception {
byte[] keyBytes = Files.readAllBytes(new File(filename).toPath());
PKCS8EncodedKeySpec spec = new PKCS8EncodedKeySpec(keyBytes);
KeyFactory kf = KeyFactory.getInstance("RSA");
return kf.generatePrivate(spec);
}
Чтобы пояснить, какой секретный ключ, который я предоставляю, похож на /path/test.der
.
Однако япри попытке подписать сообщение появляется следующая ошибка - java.security.spec.InvalidKeySpecException: java.security.InvalidKeyException: invalid key format
Что здесь не так?Почему я не могу подписать сообщение закрытым ключом?Может кто-нибудь указать рабочий способ сделать это?