pfx证书获取私钥「建议收藏」

pfx证书获取私钥「建议收藏」publicclassKeyUtil{publicKeyUtil(){}publicstaticPrivateKeygetPrivateKeyFromPFX(InputStreaminputStream,StringpfxFilePwd)throwsPKIException{PKCS12pkcs12=newP…

大家好,又见面了,我是你们的朋友全栈君。


public class KeyUtil {
    public KeyUtil() {
    }

    public static PrivateKey getPrivateKeyFromPFX(InputStream inputStream, String pfxFilePwd) throws PKIException {
        PKCS12 pkcs12 = new PKCS12();
        pkcs12.load(inputStream);
        pkcs12.decrypt(pfxFilePwd.toCharArray());
        return pkcs12.getPrivateKey();
    }

    public static PrivateKey getPrivateKeyFromPFX(String pfxFilePath, String pfxFilePwd) throws PKIException {
        PKCS12 pkcs12 = new PKCS12();
        pkcs12.load(pfxFilePath);
        pkcs12.decrypt(pfxFilePwd.toCharArray());
        return pkcs12.getPrivateKey();
    }

    public static PrivateKey getPrivateKeyFromPFX(byte[] pfxFileData, String pfxFilePwd) throws PKIException {
        PKCS12 pkcs12 = new PKCS12();
        pkcs12.load(pfxFileData);
        pkcs12.decrypt(pfxFilePwd.toCharArray());
        return pkcs12.getPrivateKey();
    }

    public static SM2PrivateKey getPrivateKeyFromSM2(String sm2FilePath, String sm2FilePwd) throws PKIException {
        ASN1InputStream ais = null;
        FileInputStream fis = null;

        SM2PrivateKey var8;
        try {
            fis = new FileInputStream(sm2FilePath);
            byte[] data = new byte[fis.available()];
            fis.read(data);
            fis.close();
            boolean isB64 = ASN1Parser.isBase64Compatability(data);
            if (isB64) {
                data = Base64.decode(data);
            }

            ByteArrayInputStream bis = new ByteArrayInputStream(data);
            ais = new ASN1InputStream(bis);
            PKCS12_SM2 sm2Pfx = PKCS12_SM2.getInstance(ais.readObject());
            var8 = sm2Pfx.getPrivateKey(sm2FilePwd);
        } catch (Exception var20) {
            throw new PKIException(var20.getMessage());
        } finally {
            try {
                fis.close();
            } catch (IOException var19) {
                var19.printStackTrace();
            }

            if (ais != null) {
                try {
                    ais.close();
                } catch (IOException var18) {
                    throw new PKIException(var18.getMessage());
                }
            }

        }

        return var8;
    }

    public static SM2PrivateKey getPrivateKeyFromSM2(InputStream inputStream, String sm2FilePwd) throws PKIException {
        ASN1InputStream ais = null;

        SM2PrivateKey var7;
        try {
            byte[] data = new byte[inputStream.available()];
            inputStream.read(data);
            boolean isB64 = ASN1Parser.isBase64Compatability(data);
            if (isB64) {
                data = Base64.decode(data);
            }

            ByteArrayInputStream bis = new ByteArrayInputStream(data);
            ais = new ASN1InputStream(bis);
            PKCS12_SM2 object = PKCS12_SM2.getInstance(ais.readObject());
            var7 = object.getPrivateKey(sm2FilePwd);
        } catch (Exception var19) {
            throw new PKIException(var19.getMessage());
        } finally {
            try {
                inputStream.close();
            } catch (IOException var18) {
                var18.printStackTrace();
            }

            if (ais != null) {
                try {
                    ais.close();
                } catch (IOException var17) {
                    throw new PKIException(var17.getMessage());
                }
            }

        }

        return var7;
    }

    public static SM2PrivateKey getPrivateKeyFromSM2(byte[] sm2FileData, String sm2FilePwd) throws PKIException {
        ASN1InputStream ais = null;

        SM2PrivateKey var6;
        try {
            boolean isB64 = ASN1Parser.isBase64Compatability(sm2FileData);
            if (isB64) {
                sm2FileData = Base64.decode(sm2FileData);
            }

            ByteArrayInputStream bis = new ByteArrayInputStream(sm2FileData);
            ais = new ASN1InputStream(bis);
            PKCS12_SM2 object = PKCS12_SM2.getInstance(ais.readObject());
            var6 = object.getPrivateKey(sm2FilePwd);
        } catch (Exception var15) {
            throw new PKIException(var15.getMessage());
        } finally {
            if (ais != null) {
                try {
                    ais.close();
                } catch (IOException var14) {
                    throw new PKIException(var14.getMessage());
                }
            }

        }

        return var6;
    }

    public static PrivateKey getPrivateKeyFromJKS(String jksFilePath, String jksFilePwd, String alias) throws PKIException {
        try {
            KeyStore ks = InitKeyStore.initJKSKeyStore(jksFilePath, jksFilePwd);
            char[] password = jksFilePwd.toCharArray();
            return (PrivateKey)ks.getKey(alias, password);
        } catch (Exception var5) {
            throw new PKIException(var5.getMessage());
        }
    }

    public static PrivateKey getPrivateKeyFromJKS(InputStream is, String jksFilePwd, String alias) throws PKIException {
        try {
            KeyStore ks = InitKeyStore.initJKSKeyStore(is, jksFilePwd);
            char[] password = jksFilePwd.toCharArray();
            return (PrivateKey)ks.getKey(alias, password);
        } catch (Exception var5) {
            throw new PKIException(var5.getMessage());
        }
    }

    public static KeyPair generateKeyPair(Mechanism mechanism, int keyLength, Session session) throws PKIException {
        if ("SM2".equals(mechanism.getMechanismType()) && 256 != keyLength) {
            throw new PKIException("key length must be 256 bits for SM2");
        } else {
            return session.generateKeyPair(mechanism, keyLength);
        }
    }

    public static Key generateKey(Mechanism keyType, Session session) throws PKIException {
        return session.generateKey(keyType);
    }

    public static Key generateKey(Mechanism keyType, byte[] keyData, Session session) throws PKIException {
        return session.generateKey(keyType, keyData);
    }

    public static SM2PublicKey getSM2PublicKey(byte[] pubX, byte[] pubY) {
        return new SM2PublicKey(pubX, pubY);
    }

    public static SM2PrivateKey getSM2PrivateKey(byte[] da, byte[] pubX, byte[] pubY) {
        return new SM2PrivateKey(da, pubX, pubY);
    }
}

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/145038.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • A2W W2A A2T T2A _T() 含义以及用法

    A2W W2A A2T T2A _T() 含义以及用法A2W、W2A、A2T、T2A _T() 的含义及使用方法1、A2W和W2A在《Window核心编程》,多字节和宽字节之间转换比较麻烦的,MultiByteToWideChar函数和WideCharToMultiByte函数有足够多的参数的意义让我们去理解。那么使用ATL的一个很好的字符串的转换宏:A2W和W2A。char:8位字节类型,表示ASCII码WCHAR:16位字符类型,表示Un…

    2022年8月18日
  • Java学习之接口与多态篇

    Java学习之接口与多态篇0x00前言在前面写的几篇文章里,讲了封装和继承,那么这篇文章就来讲讲第三大面向对象的特性多态吧,在此之前先接着上篇文章的抽象先来看看Java里面接口的应用。0x01

    2021年12月11日
  • navicat 15激活码【中文破解版】

    (navicat 15激活码)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.htmlWKAWTQAJR5-eyJsa…

    2022年3月22日
  • mysql econnreset_node使用knex连接mysql,每个小时大概率出现:read ECONNRESET?

    mysql econnreset_node使用knex连接mysql,每个小时大概率出现:read ECONNRESET?我有一个node程序每小时查询一次本地数据库马上再查询一次内网数据库,仅在查询内网数据库时出现readECONNRESET。使用npm库knex+mysql2连接数据库,knex配置如下(有使用连接池)require(‘knex’)({client:’mysql2′,connection:{host:’127.0.0.1′,user:’your_database_user’,pass…

    2022年6月17日
  • linux efi shell,EFI Shell

    linux efi shell,EFI Shell1.2.ItaniumSystems—TheEFIShellBeforeyoustarttoinstallRedHatEnterpriseLinuxonanItanium,youmusthaveabasicunderstandingoftheEFIShell,whatitdoes,andtheinformationitcanpro…

    2022年7月24日
  • java中Scanner用法

    java中Scanner用法1.导入包,idea可自动导入importjava.util.Scanner;2.创建一个扫描器对象,用于接收用户输入的数据Scannerscanner=newScanner(System.in);3.创建完成后的接收以及判断<1>用next方法接收System.out.println(“使用next方式接收:”);//判断用户有没有输入字符串if(scanner.hasNext()){Stringstr=

    2022年7月7日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号