亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于XML數(shù)字簽名的研究及實現(xiàn)

        2009-12-31 00:00:00邢?;?/span>吳淑雷
        商場現(xiàn)代化 2009年8期

        [摘 要] 本文主要研究如何充分利用XML的結(jié)構(gòu)化優(yōu)勢,結(jié)合傳統(tǒng)數(shù)字簽名技術(shù),實現(xiàn)粒度可選的數(shù)字簽名。首先深入研究了XML數(shù)字簽名的規(guī)范,XML數(shù)字簽名的生成原理及驗證方法。并利用跨平臺的Java語言對基于WEB的XML電子定單實現(xiàn)粒度可選的數(shù)字簽名,解析了基于Java的XML數(shù)字簽名的通用實例,使其能夠很方便的融入實際應(yīng)用之中。

        [關(guān)鍵詞] XML 數(shù)字簽名 RSA JAVA

        一、引言

        XML(eXtensible Markup Language,可擴展標記語言)是由W3C于1998年2月發(fā)布的一種標準,是SGML(Standard Generalized Markup Language,標準通用標記語言)的一個簡化子集。XML作為一種描述數(shù)據(jù)的標記語言,以其強大的描述功能、可擴展性、結(jié)構(gòu)化語義,以及平臺無關(guān)性等特點,在互聯(lián)網(wǎng)和分布式異構(gòu)環(huán)境中成為主要的數(shù)據(jù)傳輸和交換載體,在電子商務(wù)等領(lǐng)域得到了廣泛的應(yīng)用。為了確保XML數(shù)據(jù)的安全性,尤其是數(shù)據(jù)的完整性、可驗證性和不可抵賴性,XML數(shù)字簽名技術(shù)應(yīng)運而生。

        XML數(shù)字簽名與傳統(tǒng)的數(shù)字簽名技術(shù)相比,并沒有技術(shù)上的飛躍或本質(zhì)上的不同。XML數(shù)字簽名技術(shù)同樣基于目前廣泛使用的公共密鑰體系(Public Key Infrastructure,PKI),用戶基于某種非對稱加密算法,例如:RSA、DSA,用私鑰對要簽署的數(shù)據(jù)簽名,然后接受方用簽名者的公鑰對簽名進行校驗。但不同的是,傳統(tǒng)的數(shù)字簽名技術(shù)一般采用整體式簽名,或基于OLE的對象鏈接嵌入式簽名。傳統(tǒng)的數(shù)字簽名技術(shù)很難支持電子文檔的多人批復簽名,也不支持對電子文檔的部分簽名。XML數(shù)字簽名較好地解決了上述問題。XML數(shù)字簽名充分利用了XML語言本身強大的表達能力和擴展能力,不僅可以像傳統(tǒng)的數(shù)字簽名技術(shù)一樣對整個文檔簽名,還可以實現(xiàn)在較細的粒度上對文檔的特定部分進行簽名,且支持多重簽名。

        二、XML數(shù)字簽名規(guī)范

        由IETF(Internet Engineering Task Force)和W3C共同組建的XML Signature工作組在2001年8月20日公布了XML數(shù)字簽名的推薦版本。W3C將XML數(shù)字簽名解釋為:定義一種與XML語法兼容的數(shù)字簽名語法描述規(guī)范,描述數(shù)字簽名本身和簽名的生成與驗證過程。作為一個安全有效的數(shù)字簽名方案,該規(guī)范提供了數(shù)字簽名的完整性(Integrity)、簽名確認(Authentication)和不可抵賴性(None repudiation)。其規(guī)范框架及產(chǎn)生流程如圖1所示:

        根據(jù)簽名元素和被簽名對象之間的關(guān)系,XML數(shù)字簽名有三種簽名方式:

        1.封裝式簽名(Enveloping Signature),被簽名數(shù)據(jù)被封裝在XML簽名元素的內(nèi)部,元素類似于一個信封,將簽名的數(shù)據(jù)封在里面。

        2.嵌入式簽名(Enveloped Signature),元素本身被嵌入到被簽名數(shù)據(jù)中,與封裝式相反,被簽名的數(shù)據(jù)充當了包含簽名的“信封”。

        3.分離式簽名(Detached Signature),元素和被簽名數(shù)據(jù)是彼此分離的,兩者之間不存在包含和被包含的關(guān)系。被簽名的數(shù)據(jù)可以是獨立的外部文檔,也可以是跟Signature元素位于同一XML文檔內(nèi)的并列的兄弟元素。

        三、XML數(shù)字簽名的實現(xiàn)

        1.XML數(shù)字簽名生成。自從XML數(shù)字簽名規(guī)范發(fā)布以來,很多組織機構(gòu)進行了研究并提供了具體的實現(xiàn)。例如,IBM的AlphaWorks小組開發(fā)了XML安全套件(XML Security Suite),除了提供XML數(shù)字簽名的實現(xiàn)外,還包括了XML的訪問控制、XML加密等功能。NEC專門提供了XML-Signature Software Library對XML數(shù)字簽名進行支持。但是XML安全或數(shù)字簽名套件,很難滿足在各種應(yīng)用程序中對各種各樣實際的XML文檔進行靈活的簽名應(yīng)用。本文將XML數(shù)字簽名與跨平臺的Java語言相結(jié)合,對XML電子訂單文檔實現(xiàn)粒度可選的數(shù)字簽名。實現(xiàn)步驟如下:

        (1)生成密鑰對。對于一個用戶來說,如果要進行數(shù)字簽名,那么他必須有一對屬于自己的密鑰對(私鑰和公鑰)。在實際應(yīng)用系統(tǒng)中,密鑰對通常是由CA預(yù)先生成的并存儲在服務(wù)器密鑰庫中,私鑰自己保存和公鑰公開。我們利用Java中提供的工廠類KeyPairGenerator,通過其中的genKeyPair()方法生成密鑰對。

        KeyPairGenerator KPG=KeyPairGenerator.getInstance(\"RSA\"); //---創(chuàng)建密鑰對生成器---

        KPG.initialize(1024);//---初始化密鑰生成器---

        KeyPair KP=KPG.genKeyPair();//---生成密鑰對---

        (2)加載解析XML文檔轉(zhuǎn)換為DOM對象。用DOM解析XML文檔操作比較簡便,先將XML文檔讀入內(nèi)存,在內(nèi)存中建立起一棵DOM文檔樹,然后通過對內(nèi)存中DOM文檔樹的操作來完成對XML文檔的操作。加載解析XML文檔并取得根元素的代碼如下:

        DocumentBuilderFactory userDBF=DocumentBuilderFactory.newInstance();//---建立一個解析器工廠---

        DocumentBuilder userDB=userDBF.newDocumentBuilder(); //---獲得一個DocumentBuilder對象,這個對象代表了具體的DOM解析器

        Document doc=userDB.parse(new File(\"invoice.xml\")); //---得到代表invoice.xml文件的文檔對象

        Element elementRoot=doc.getDocumentElement(); //---得到根元素---

        然后通過Node結(jié)點對象的getChildNodes()方法獲取DOM樹中所需要的子節(jié)點。后面我們創(chuàng)建Reference元素對象、SignedInfo元素對象、KeyInfo元素對象、XMLSignature元素對象都要用到加載的DOM文檔樹。

        (3)對XML文檔中的節(jié)點進行可選性簽名。對要簽名的文檔(或節(jié)點)用指定的算法進行轉(zhuǎn)換。如下轉(zhuǎn)換獲得需要簽名的節(jié)點:

        descendant-or-self::creditcard

        根據(jù)指定的算法對轉(zhuǎn)換后的結(jié)果進行摘要計算,結(jié)果存入。JAVA中提供了比較成熟的計算摘要的算法,MessageDigest是工廠類,用靜態(tài)方法getInstance()來生成對象,傳入?yún)?shù)是String類型,用于指出計算摘要使用的算法。摘要計算的核心代碼如下:

        try{ MessageDigest MD=MessageDigest.getInstance(\"MD5\");

        MD.update(str.getBytes(\"UTF8\"));

        byte[] strMD5Byte=MD.digest();

        return strMD5Byte;

        }catch(Exception e){e.printStackTrace();}

        III.收集各個參考對象元素,該元素包括: ,,建立。

        IV.建立元素并進行規(guī)范化處理后簽名。讀取私鑰并簽名的關(guān)鍵代碼:

        FileInputStream FIS=new FileInputStream(\"RSAPriKey.dat\"); //---讀取私鑰---

        Signature signature=Signature.getInstance(\"MD5WithRSA\"); //---獲取Signature對象---

        signature.initSign(RSAPK); //---初始化Signature對象---

        signature.update(mydata.getBytes(\"UTF8\")); //---傳入要簽名的數(shù)據(jù)---

        byte[] signeddata=signature.sign();//---用私鑰作簽名---

        (4)按照中指定的算法對元素進行簽名操作,將簽名結(jié)果存入節(jié)點。建立元素,該元素包括、。最后,將各個元素添加入XML文檔,生成XML簽名文檔。運用JAVA語言對下圖中的XML電子訂單文檔實現(xiàn)了XML文檔節(jié)點可選性的數(shù)字簽名,結(jié)合上述簽名過程解析,對結(jié)點進行簽名的實現(xiàn)結(jié)果如下圖所示:

        2.XML數(shù)字簽名驗證。XML數(shù)字簽名的校驗過程分為兩部分進行,參考校驗(Reference Validation)和簽名校驗(Signature Validation)。參考校驗的目的是確保被簽署對象沒有被做任何的修改,驗證在每個元素的元素中進行;而簽名校驗的目的則是保證簽署人身份的真實性,驗證利用元素計算得來的簽名。

        (1)對簽名校驗(參考校驗)。對簽名校驗通過計算元素中的每一個元素,與元素中已包含的摘要值進行比較。

        (2)對簽名校驗(簽名校驗)。對的簽名校驗,用指定的算法重新計算元素的簽名值,將生成的值和中已有的簽名值進行比較。

        當上述兩步都成功時,該XML數(shù)字簽名的校驗才算通過。

        四、結(jié)束語

        隨著XML的廣泛應(yīng)用,XML數(shù)據(jù)的安全問題已成為關(guān)注的焦點。本文主要對XML數(shù)字簽名規(guī)范,XML數(shù)字簽名的生成與驗證過程進行了系統(tǒng)的研究。并結(jié)合XML文檔的結(jié)構(gòu)優(yōu)勢和RSA算法的安全性,利用跨平臺的Java語言對XML文檔實現(xiàn)粒度可選的數(shù)字簽名,并詳細解析了實現(xiàn)過程及關(guān)鍵代碼,使其能夠很方便的融入實際應(yīng)用之中。在文檔部分簽名的實際應(yīng)用當中具有一定的借鑒意義。

        參考文獻:

        [1]丁躍潮 張 濤:XML實用教程[M].北京:北京大學出版社,2006

        [2]韋琳娜 張連寬等:XML數(shù)字簽名和傳統(tǒng)數(shù)字簽名的對比研究[J].信息技術(shù)與標準化,2004,10

        [3]張 勇 馮玉才:XML數(shù)字簽名技術(shù)及其在Java中的具體實現(xiàn)[J].計算機應(yīng)用,2003,9

        [4]http://www.w3.org/TR/2008/PER-xmldsig-core-20080326/

        [5]郭競樂 趙正德等:XML 數(shù)字簽名技術(shù)的研究與實現(xiàn)[J].計算機工程與設(shè)計,2005,05

        [6]于國良 韓文報:XML的簽名[J].計算機工程與應(yīng)用,2006,07

        日本不卡视频网站| 国产成人精品无码一区二区三区| 亚洲国产精华液网站w| 少妇高潮喷水正在播放| 国产AV无码专区亚洲AWWW| 一区二区三区观看视频在线| 久久亚洲精品情侣| 一本久久a久久精品亚洲| 美女视频很黄很a免费国产| 国产一区二区三区中出| 亚洲欧美v国产一区二区| 久久乐国产精品亚洲综合| 国产在线欧美日韩精品一区二区| 美利坚合众国亚洲视频| 精品综合久久久久久888蜜芽| 一本大道久久东京热无码av| 亚洲人成18禁网站| 国产午夜福利小视频在线观看| 日韩精品人妻中文字幕有码| 久久久精品人妻一区二区三区| 国产国拍亚洲精品福利| 熟女免费视频一区二区| 免费人成网站在线观看欧美| 国产成人精品三级麻豆| 精选二区在线观看视频| 国产精品无套一区二区久久| 日韩亚洲欧美中文在线| 国产一级在线现免费观看| 亚洲av色精品国产一区二区三区| 亚洲av成人无码一二三在线观看| 少妇内射高潮福利炮| 亚洲精品一区二区三区播放| 国产精品国产三级国产av18| 吃奶摸下激烈床震视频试看| 亚洲欧美日韩国产精品一区| 免费人成在线观看播放视频| 久久国产精品偷任你爽任你| 亚洲精品免费专区| 少妇激情一区二区三区| 亚洲人成网站18禁止| 国产免费又色又爽又黄软件|