JAVA 签名对象 - 没有已安装的提供商支持此密钥:sun.security.rsa.RSAPrivateCrtKeyImpl

JAVA Signature Object - No installed provider supports this key: sun.security.rsa.RSAPrivateCrtKeyImpl

我想对我使用密钥工具和以下命令创建的一对 RSA 密钥创建的文件进行签名:

keytool -genkeypair -alias key -keyalg RSA -keysize 2048 -sigalg SHA256withRSA -validity 365 -keystore keystore.jks

我想初始化我的 Signature 对象,所以我尝试了这个:

PrivateKey privateKey = (PrivateKey) keyStore.getKey(PRIVATE_KEY_ALIAS,privateKeyPassword);
Signature signature = Signature.getInstance(SIGNATURE_ALGORITHM);
signature.initSign(privateKey);

但是我得到了这个例外:
No installed provider supports this key: sun.security.rsa.RSAPrivateCrtKeyImpl

感谢任何帮助!

您不能将 SHA1withDSA 与 RSA 密钥一起使用。将签名算法更改为 SHA1withRSA 或生成 DSA 密钥 instea