實現CRL中吊銷列表按日期排序

2021-08-30 07:47:59 字數 1537 閱讀 5127

專案原來設計只要求讀取crl中吊銷列表的序列號和吊銷日期,所以並未考慮排序的問題,但是後來又要求按照吊銷日期進行排序。

下面是原來的程式,顯示出來的吊銷列表順序是亂的,和證書上的順序不一致。

certificatefactory cf = certificatefactory.getinstance("x.509");

x509crl crl = (x509crl)cf.generatecrl(new fileinputstream("c:\\1.crl"));

//讀取版本號

int version = crl.getversion();

//讀取頒發者dn

string issuerdn = crl.getissuerdn().tostring();

//讀取生效日期

date starttime = crl.getthisupdate();

//讀取下一次更新日期

date nextupdatetime = crl.getnextupdate();

//讀取吊銷列表

set tset = crl.getrevokedcertificates();

iterator titerator = tset.iterator();

while(titerator.hasnext())

根據吊銷列表中的每個物件獲得序列號的字串值,entry.getserianumber()讀取出來是biginteger,可讀性不好也不直觀,所以下面的方法將其轉換成字串,並且和證書上顯示的序列號相同。

public static string getserialnumber(x509crlentry entry)

return compare;

}

實現方法有2種:treeset和list。

第一種 treeset 

set tset = crl.getrevokedcertificates();

//----------加入**開始----------

treeset ts = new treeset(new crldatecomparator());

ts.addall(set);

//----------加入**結束----------

iterator titerator = ts.iterator();

第二種 list

set tset = crl.getrevokedcertificates();

//----------加入**開始----------

list l = new arraylist();

l.addall(set);

collections.sort(l, new crldatecomparator());

//----------加入**結束----------

iterator titerator = l.iterator();

以上兩種方法經過測試,都可以滿足要求。

證書吊銷列表 CRL 介紹

一 證書吊銷列表 crl 證書吊銷列表 certificate revocation list 簡稱 crl 是 pki 系統中的乙個結構化資料檔案,該檔案包含了證書頒發機構 ca 已經吊銷的證書的序列號及其吊銷日期。crl 檔案中還包含證書頒發機構資訊 吊銷列表失效時間和下一次更新時間,以及採用的...

證書吊銷列表 CRL 介紹

一 證書吊銷列表 crl 證書吊銷列表 certificate revocation list 簡稱 crl 是 pki 系統中的乙個結構化資料檔案,該檔案包含了證書頒發機構 ca 已經吊銷的證書的序列號及其吊銷日期。crl 檔案中還包含證書頒發機構資訊 吊銷列表失效時間和下一次更新時間,以及採用的...

C 在列表中按特性查詢

宣告 閱讀本文需要 c 泛型和委託的基本知識。列表在程式設計過程中應用極為廣泛,而按照索引來查詢顯然不能滿足所有需求,c net 提供了很好的內建方法來方便程式設計師編寫按照特性來搜尋列表中的成員的 下面我將介紹該方法。在 list 類中,有幾個方 findindex findall find fi...