如何使用 java 中的 Bouncy Castle 从 CSR 文件中确定 Public 密钥大小?

How to determine the Public Key Size from the CSR file using Bouncy Castle in java?

我有一个客户提供的 CSR 文件,我可以通过 JcaPKCS10CertificationRequest getPublicKey().getAlgorithm() 找到密钥类型 (RSA/DSA)方法,但我找不到任何合适的方法来确定 public 键的 length/size(例如:1024/2048/4096 位)。

据我了解,没有任何通用方法可以获取 public 密钥的 'key size'。相反,请检查您的 public 密钥以查看它是否实现了诸如 RSAPublicKey or DSAPublicKey 之类的接口。如果是,则使用各种接口方法从密钥中提取 属性 并获取其位长度,例如:

PublicKey publicKey = yourRequest.getPublicKey();
int keySize
if (publicKey instanceof RSAPublicKey) {
    keySize = ((RSAPublicKey)publicKey).getPublicExponent().bitLength();
} else if (publicKey instance DSAPublicKey) {
    keySize = ((DSAPublicKey)publicKey).getY().bitLength();
} else {
    // handle other public key types.
}