区分获取SM2、RSA类型证书的密钥长度、秘钥算法和签名算法值

 最近不知道在忙什么,也不知道写点什么,直接丢个工具类吧~~~

  /**
   * 获取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!本人已经打算回家找妈妈啦~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值