Java проверит цифровую подпись в openssl

Используя это руководство, я создал программу на Java, которая может подписывать документ с помощью алгоритма SHA256 с RSA. В результате я получаю открытый ключ и файл подписи.

Я пытаюсь проверить свой файл с помощью openssl, но не могу... Я искал в сети и обнаружил, что мне нужен стандартный ключ.pem, поэтому мой вопрос: как я могу преобразовать мой ключ в формат pem? Или я могу сгенерировать ключ.pem в Java? И если это неверный путь, как я могу проверить свою подпись?

1 ответ

Решение

Файл PEM содержит двоичные данные открытого ключа, закодированные в base64 и разделенные на строки по 64 символа. Файл также имеет заголовок -----BEGIN PUBLIC KEY----- и нижний колонтитул -----END PUBLIC KEY-----

У Java нет собственного конвертера в PEM, но вы можете использовать bouncycastle

PEMWriter pemWriter = new PEMWriter(new FileWriter(file));
pemWriter.writeObject(publicKey);
pemWriter.flush();
pemWriter.close();

В качестве альтернативы вы можете проверить подпись с помощью openssl, используя формат двоичного ключа, используя

  -keyform DER

Затем сохраните содержимое вашего publicKey в файл

 byte publicKeyDer[] = publicKey.getEncoded()
Другие вопросы по тегам