В документации JCA приведен пример использования Signature
(в разделе Создание и проверка подписи с использованием сгенерированных ключей . Вы бы использовали SHA256withRSA
вместо SHA1withDSA
, поскольку это поддерживается SunRsaSignProvider (при условии, что это ключ RSA). Для этого вам не нужен BouncyCastle.
Если вы хотите использовать BouncyCastle, вам нужно будет что-то сделать в этом направлении (Я не пробовал этот конкретный код):
AsymmetricKeyParameter keyParam = PrivateKeyFactory.createKey(...);
// You might need to cast to private key to RSAPrivateKey
// and get its attributes manually here.
SHA256Digest digest = new SHA256Digest();
RSADigestSigner signer = new RSADigestSigner(digest);
signer.init(true, keyParam);
signer.update(... data to sign, start, length, ...);
byte[] signature = signer.generatedSignature();
(Если вы делаете это из веб-приложения, вам также потребуется веб-приложение, чтобы иметь возможность получить доступ к этому секретному ключу, который можетбыть угрозой безопасности, если веб-приложение будет скомпрометировано. Возможно, стоит рассмотреть возможность использования другого ключа / сертификата, даже самоподписанного, если удаленная сторона желает его принять.)