签名算法枚举

签名算法枚举

/**
 * 
 * 签名算法
 *
 */
public class SignatureAlgorithms {

    private static final HashMap<String, String> signatureAlgOID = new HashMap<String, String>();

    private static final HashMap<String, String> signatureAlg = new HashMap<String, String>();

    static {
        signatureAlgOID.put("1.2.840.113549.1.1.4", "MD5WithRSA");

        /* SHA PKCS #1 v1.5 */
        signatureAlgOID.put("1.2.840.113549.1.1.5", "SHA1WithRSA");
        signatureAlgOID.put("1.2.840.113549.1.1.11", "SHA256WithRSA");
        signatureAlgOID.put("1.2.840.113549.1.1.12", "SHA384WithRSA");
        signatureAlgOID.put("1.2.840.113549.1.1.13", "SHA512WithRSA");
        /* SHA PKCS #1 v1.5 */

        /* 国密 PKCS #1 v1.5 */
        signatureAlgOID.put("1.2.156.10197.1.501", "SM3WithSM2");
        signatureAlgOID.put("1.2.156.10197.1.502", "SHA1WithSM2");
        signatureAlgOID.put("1.2.156.10197.1.503", "SHA256WithSM2");
        signatureAlgOID.put("1.2.156.10197.1.504", "SM3WithRSA");
        /* 国密 PKCS #1 v1.5 */

        /* ECDSA PKCS #1 v1.5 */
        signatureAlgOID.put("1.2.840.10045.4.1", "SHA1WithECDSA");
        signatureAlgOID.put("1.2.840.10045.4.3.2", "SHA256WithECDSA");
        signatureAlgOID.put("1.2.840.10045.4.3.3", "SHA384WithECDSA");
        signatureAlgOID.put("1.2.840.10045.4.3.4", "SHA512WithECDSA");
        /* ECDSA PKCS #1 v1.5 */

        /* SHA3 RSA PKCS #1 v1.5 */
        signatureAlgOID.put("2.16.840.1.101.3.4.3.10", "SHA3-256WithRSA");
        signatureAlgOID.put("2.16.840.1.101.3.4.3.11", "SHA3-384WithRSA");
        signatureAlgOID.put("2.16.840.1.101.3.4.3.12", "SHA3-512WithRSA");
        /* SHA3 RSA PKCS #1 v1.5 */

        /* SHA3 ECDSA PKCS #1 v1.5 */
        signatureAlgOID.put("2.16.840.1.101.3.4.3.10", "SHA3-256WithECDSA");
        signatureAlgOID.put("2.16.840.1.101.3.4.3.11", "SHA3-384WithECDSA");
        signatureAlgOID.put("2.16.840.1.101.3.4.3.12", "SHA3-512WithECDSA");
        /* SHA3 ECDSA PKCS #1 v1.5 */

        signatureAlg.put("SHA1WITHRSA", "1.2.840.113549.1.1.5");
        signatureAlg.put("SHA256WITHRSA", "1.2.840.113549.1.1.11");
        signatureAlg.put("MD5WITHRSA", "1.2.840.113549.1.1.4");
        signatureAlg.put("SHA384WITHRSA", "1.2.840.113549.1.1.12");
        signatureAlg.put("SHA512WITHRSA", "1.2.840.113549.1.1.13");
        signatureAlg.put("SM3WITHSM2", "1.2.156.10197.1.501");
        signatureAlg.put("SHA256WITHSM2", "1.2.156.10197.1.503");
        signatureAlg.put("SHA1WITHSM2", "1.2.156.10197.1.502");
        signatureAlg.put("SM3WITHRSA", "1.2.156.10197.1.504");
        signatureAlg.put("SHA1WITHECDSA", "1.2.840.10045.4.1");
        signatureAlg.put("SHA256WITHECDSA", "1.2.840.10045.4.3.2");
        signatureAlg.put("SHA384WITHECDSA", "1.2.840.10045.4.3.3");
        signatureAlg.put("SHA512WITHECDSA", "1.2.840.10045.4.3.4");
        signatureAlg.put("SHA3-256WithRSA", "2.16.840.1.101.3.4.3.10");
        signatureAlg.put("SHA3-384WithRSA", "2.16.840.1.101.3.4.3.11");
        signatureAlg.put("SHA3-512WithRSA", "2.16.840.1.101.3.4.3.12");
        signatureAlg.put("SHA3-256WithECDSA", "2.16.840.1.101.3.4.3.10");
        signatureAlg.put("SHA3-384WithECDSA", "2.16.840.1.101.3.4.3.11");
        signatureAlg.put("SHA3-512WithECDSA", "2.16.840.1.101.3.4.3.12");

    }

    /**
     * 获取签名算法名称
     * 
     * @param oid
     * @return
     */
    public static String getSignatureName(String oid) {
        if (oid == null) {
            throw new IllegalArgumentException("Oid cannot be empty");
        }
        String signName = signatureAlgOID.get(oid);
        if (signName == null) {
            throw new RuntimeException("Oid does not exist");
        }
        return signName;
    }

    /**
     * 获取签名算法 oid
     * 
     * @param signName
     *            算法名称
     * @return
     */
    public static String getSignatureOid(String signName) {
        if (signName == null) {
            throw new IllegalArgumentException("signName cannot be empty");
        }
        String oid = signatureAlg.get(signName.toUpperCase());
        if (oid == null) {
            throw new RuntimeException("signName does not exist");
        }
        return oid;
    }

}
  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值