接你代码后面
String algorithm = publickey.getAlgorithm(); // 获取算法
KeyFactory keyFact = KeyFactory.getInstance(algorithm);
BigInteger prime = null;
if ("RSA".equals(algorithm)) { // 如果是RSA加密
RSAPublicKeySpec keySpec = (RSAPublicKeySpec)keyFact.getKeySpec(publickey, RSAPublicKeySpec.class);
prime = keySpec.getModulus();
} else if ("DSA".equals(algorithm)) { // 如果是DSA加密
DSAPublicKeySpec keySpec = (DSAPublicKeySpec)keyFact.getKeySpec(publickey, DSAPublicKeySpec.class);
prime = keySpec.getP();
}
int len = prime.toString(2).length(); // 转换为二进制,获取公钥长度
sun.security.util.KeyUtil.getKeySize(Key key), 支持RSA、DSA等算法的PrivateKey和PublicKey
X509Certificate的 toString()是这样的:
[
Version: V3
Subject: CN=XXXXXX, EMAILADDRESS=yyyyyyy@XXXXX.com, O=ZZZZZZZZZZ
Signature Algorithm: MD5withRSA, OID = 1.2.840.113549.1.1.4
Key: Sun RSA public key, 1024 bits
所以,可以知道是1024 bits
PublicKey的toString()的开头是这样的
Sun RSA public key, 1024 bits
modulus: 990645334079840363710713617513
所以,也能知道是1024 bits