第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何在java中以編程方式讀取p7b文件

如何在java中以編程方式讀取p7b文件

jeck貓 2023-07-19 16:48:35
我的本地存儲(chǔ)中有 .p7b 文件(C:\Users\Certs\cert.p7b)。?我嘗試了以下方法。File file = new File("C:\Users\Certs\cert.p7b");BufferedInputStream bis = null;try {? ? ?byte[] buffer = new byte[(int) file.length()];? ? ?DataInputStream in = new DataInputStream(new FileInputStream(file));? ? ?in.readFully(buffer);? ? ?in.close();? ? ?CertificateFactory certificatefactory = CertificateFactory.getInstance("X.509");? ? ?X509Certificate cert = certificatefactory.getCertificate(in);}catch (Exception e){? ? ?System.out.println("Exception");}但它不起作用。那么我如何加載這個(gè) .p7b 文件,然后將其存儲(chǔ)在密鑰庫(kù)中。
查看完整描述

2 回答

?
德瑪西亞99

TA貢獻(xiàn)1770條經(jīng)驗(yàn) 獲得超3個(gè)贊

要從 PKCS#7 文件中讀取證書(shū),您可以使用以下代碼片段:


public static final Certificate[] readCertificatesFromPKCS7(byte[] binaryPKCS7Store) throws Exception

{

    try (ByteArrayInputStream bais = new ByteArrayInputStream(binaryPKCS7Store);)

    {

        CertificateFactory cf = CertificateFactory.getInstance("X.509");

        Collection<?> c = cf.generateCertificates(bais);


        List<Certificate> certList = new ArrayList<Certificate>();


        if (c.isEmpty())

        {

            // If there are now certificates found, the p7b file is probably not in binary format.

            // It may be in base64 format.

            // The generateCertificates method only understands raw data.

        }

        else

        {


            Iterator<?> i = c.iterator();


            while (i.hasNext())

            {

                certList.add((Certificate) i.next());

            }

        }


        java.security.cert.Certificate[] certArr = new java.security.cert.Certificate[certList.size()];


        return certList.toArray(certArr);

    }

}


查看完整回答
反對(duì) 回復(fù) 2023-07-19
?
慕后森

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超5個(gè)贊

您關(guān)閉了輸入流。之后您將無(wú)法讀取它。


您不應(yīng)該使用 DataInputStream。您不應(yīng)該使用緩沖區(qū)。只需打開(kāi)文件并讓CertificateFactory 從中讀?。?/p>


X509Certificate cert = null;

File file = new File("C:\\Users\\Certs\\cert.p7b");

try (InputStream in = new BufferedInputStream(new FileInputStream(file))) {

     CertificateFactory certificatefactory = CertificateFactory.getInstance("X.509");

     cert = certificatefactory.generateCertificate(in);

} catch (CertificateException e) {

     e.printStackTrace();

}

始終打印或記錄捕獲的異常的完整堆棧跟蹤。畢竟,您想知道出了什么問(wèn)題。隱藏它對(duì)你的程序沒(méi)有幫助,對(duì)你沒(méi)有幫助,對(duì)我們也沒(méi)有幫助。


將來(lái),請(qǐng)發(fā)布您的實(shí)際代碼。如果我們看不到它們,就很難知道哪些線路引起了問(wèn)題。


查看完整回答
反對(duì) 回復(fù) 2023-07-19
  • 2 回答
  • 0 關(guān)注
  • 250 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)