最近不知道在忙什么,也不知道写点什么,直接丢个工具类吧~~~
/**
* 获取X509证书的秘钥算法和秘钥长度
*
* @param certificate
* @return
*/
public static CertInfo getKeyAlgAndLength(X509Certificate certificate) throws Exception {
CertInfo certInfo = new CertInfo();
//可以得到EC RSA
String keyAlgName = certificate.getPublicKey().getAlgorithm();
//不区分大小写比较
if ("EC".equalsIgnoreCase(keyAlgName)) {
keyAlgName = "SM2";
certInfo.setKeyLength(256);
certInfo.setKeyAlg(keyAlgName);
return certInfo;
} else if ("RSA".equalsIgnoreCase(keyAlgName)) {
RSAPublicKey rsaPublicKey = (RSAPublicKey) certificate.getPublicKey();
Integer length = rsaPublicKey.getModulus().bitLength();
certInfo.setKeyAlg(keyAlgName);
certInfo.setKeyLength(length);
} else {
throw new Exception();
}
return certInfo;
}
/**
* 接收证书秘钥算法和秘钥长度
*
* @author wly
*/
public class CertInfo {
private String keyAlg;
private int keyLength;
public CertInfo() {
}
//get、set方法
}
顺便区分一下签名算法和秘钥算法值, 仅针对自己平时SM2和RSA的证书:
//获取秘钥算法 可以得到 EC RSA
String keyAlgName = cert.getPublicKey().getAlgorithm();
//获取证书签名算法 值为 SM2WithSM3、SHA1WithRSA、SHA256WithRSA等
String signAlgName = cert.getSigAlgName()
预祝大家国庆节Happy!本人已经打算回家找妈妈啦~