java中如何得到公钥的key size

2025-02-24 18:35:34
推荐回答(4个)
回答1:

接你代码后面

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(); // 转换为二进制,获取公钥长度

回答2:

sun.security.util.KeyUtil.getKeySize(Key key), 支持RSA、DSA等算法的PrivateKey和PublicKey

回答3:

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

回答4:

PublicKey的toString()的开头是这样的
Sun RSA public key, 1024 bits
modulus: 990645334079840363710713617513

所以,也能知道是1024 bits