【发布时间】:2014-01-07 07:10:23
【问题描述】:
我正在尝试使用从证书中获得的公钥加密文件。
PublicKey publicKey = cert.getPublicKey();
cipher = Cipher.getInstance("RSA", "BC");
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
抛出异常:java.lang.IllegalArgumentException: not an RSA key!
我试过了:
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
X509EncodedKeySpec spec = new X509EncodedKeySpec(publicKey.getEncoded());
PublicKey rsaPublicKey = KeyFactory.getInstance("RSA").generatePublic(spec);
但是会抛出 java.security.spec.InvalidKeySpecException: java.security.InvalidKeyException: Invalid RSA public key
org.bouncycastle.asn1.pkcs.RSAPublicKey 的构造函数需要 2 个BigIntegers(可能是 模数 和 公共指数)。
查看cert.getPublicKey() 会发现它是DSAPublicKeyImpl。
如何将其转换为Cipher.getInstance("RSA", "BC") 可用的RSAPublicKey(或其他任何内容)?
【问题讨论】:
标签: java encryption cryptography