加密中的密钥使用错误

Isu*_*ana 3 java security encryption certificate

这个类加密数据值,首先我得到密码如下,

KeyStore primaryKeyStore = getKeyStore(keyStoreFile, password, keyType, provider);
java.security.cert.Certificate certs = primaryKeyStore.getCertificate(aliasName);
cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPT_MODE, certs);
Run Code Online (Sandbox Code Playgroud)

但是上面代码的最后一行给出了以下错误。错误的密钥用法是什么意思?我不能将此证书用于加密目的吗?是否有单独的加密证书?

Caused by: java.security.InvalidKeyException: Wrong key usage 
at javax.crypto.Cipher.init(Cipher.java:1640) 
at javax.crypto.Cipher.init(Cipher.java:1549) 
at my.test.ciphertool.CipherTool.initCipher(CipherTool.java:167) 
... 1 more 
Run Code Online (Sandbox Code Playgroud)

use*_*421 5

这正是它在Javadoc 中所说的意思:

如果证书是 X.509 类型并且有一个密钥使用扩展字段标记为关键,并且密钥使用扩展字段的值意味着证书中的公钥及其相应的私钥不应该用于opmode 的值表示的操作,抛出 InvalidKeyException 异常。