一種電子印章數字簽名生成方法
【技術領域】
[0001]本發明涉及電子印章技術領域,尤其涉及一種電子印章數字簽名生成方法。
【背景技術】
[0002]上世紀90年代中后期,隨著傳統辦公模式逐漸向信息化辦公模式轉變,紙質文書的流轉形式也隨之向電子文書的流轉形式轉變;為能夠在確保電子文書有效性的同時,也使得電子文書能與傳統紙質文書具有相同的公信視覺效果,從而提出了電子印章的概念。
[0003]電子印章是一個新興事物,它把晦澀的電子簽名技術變成了人們習以為常的簽名蓋章方式,使原來很神秘的電子簽名、電子證據成為了人人都可以掌握使用的東西,消除了電子簽名的應用障礙,對電子簽名的應用推廣具有非常巨大的價值。電子印章技術以先進的數字技術模擬傳統實物印章,其管理、使用方式符合實物印章的習慣和體驗,其加蓋的電子文件具有與實物印章加蓋的紙張文件相同的外觀、相同的有效性和相似的使用方式。
[0004]中國專利第200710064786.3號公開一種實現電子印章的方法,其揭示了:在獨立的文檔處理軟件和印章處理軟件之間設置交互的接口,當需要對文檔蓋章時,由所述印章處理軟件對包括文檔的數據進行電子簽名,獲得電子簽名結果;所述電子簽名結果、文檔的印章數據和文檔數據一并保存,實現電子印章蓋章;當需要打印或顯示經過蓋章的文檔時,由文檔處理軟件打印或顯示文檔數據,由印章處理軟件在驗證電子簽名后打印或顯示印章。上述電子印章數字簽名的缺點在于:電子簽名存在一定的實時性,上述實現電子印章的方法不能保證電子簽名的實時性,同時電子簽名在使用過程中,可能會被篡改,不能保證使用過程中電子簽名的安全性。
【發明內容】
[0005]鑒于上述現有技術的不足,本發明的目的在于提供一種電子印章數字簽名生成方法,旨在解決現有的電子印章數字簽名存在被篡改、難以保證使用安全性以及時效性等技術問題。
[0006]本發明提供的技術方案為:一種電子印章數字簽名生成方法,包括:
步驟a:把需要簽章的文檔轉換成XPS文檔;
步驟b:把需要簽章的XPS文檔、印章數據和時間戳數據,生成擴展名為.espx的包; 步驟c:對espx包進行數字簽名,生成電子印章數字簽名文檔ESPX。
[0007]本發明的技術方案還包括:在所述步驟b中,生成擴展名為.espx的新包中還包括數據包關系,所述數據包關系是在往espx包添加數據時,通過自定義名稱進行添加。
[0008]本發明的技術方案還包括:所述印章數據和時間戳數據采用可擴展標記語言格式。
[0009]本發明的技術方案還包括:在所述步驟c中,所述電子印章數字簽名文檔ESPX是基于開放打包約定數據打包標準的文檔。
[0010]本發明的技術方案還包括:在所述步驟c中,所述數字簽名使用X.509證書對數據包中的部件和關系進行簽名。
[0011]本發明的技術方案還包括:所述步驟a之后還包括:判斷需要簽章的文檔是否是首次簽章,如果是首次簽章,則進入步驟b,如果不是首次簽章,則把首次簽章生成的ESPX包、印章數據、時間戳數據,生成擴展名為.espx的新包,在對新的ESPX包進行數字簽名。
[0012]本發明的技術方案還包括:所述生成擴展名為.espx的新包還包括數據包關系,所述數據包關系是在往ESPX包添加數據時通過自定義名稱進行添加。
[0013]本發明的技術方案具有如下優點或有益效果:本發明實施例的電子印章數字簽名生成方法通過把需要簽章的文檔轉換成XPS文檔,把需要簽章的XPS文檔、印章數據和時間戳數據,生成擴展名為.espx的包,對espx包進行數字簽名,生成電子印章數字簽名文檔ESPX,其能有效保證電子印章數字簽名的時效性,同時能防止電子印章數字簽名在使用過程中被篡改、保證了使用的安全性。
【附圖說明】
[0014]圖1為本發明第一實施例的電子印章數字簽名生成方法的流程圖;
圖2為本發明第二實施例的電子印章數字簽名生成方法的流程圖;
圖3為本發明第二實施例的電子印章數字簽名生成方法再次簽章生成ESPX包的示意圖。
【具體實施方式】
[0015]本發明提供一種電子印章數字簽名生成方法,為使本發明的目的、技術方案及效果更加清楚、明確,以下對本發明進一步詳細說明。應當理解,此處所描述的【具體實施方式】僅用以解釋本發明,并不用于限定本發明。
[0016]請參閱圖1,其為本發明第一實施例的電子印章數字簽名生成方法的流程圖。本發明第一實施例的電子印章數字簽名生成方法包括以下步驟:
步驟100:把需要簽章的文檔轉換成XPS文檔;
在步驟100中,需要簽章的文檔可以是office文檔、pdf文檔、txt文檔或者其他文檔。XPS是XML Paper Specificat1n(XML文件規格書)的簡稱,是一種電子文件格式。它是微軟公司開發的一種文檔保存與查看的規范,這個規范本身描述了這種格式以及分發、歸檔、顯示以及處理XPS文檔所遵循的規則。XPS是一種版面配置固定的電子文件格式,可以保存文件格式,而且具有檔案共享的功能使用者不需擁有制造該文件的軟件就可以瀏覽或打印該文件。
[0017]步驟120:把需要簽章的XPS文檔、印章數據和時間戳數據,生成擴展名為.espx的包;
步驟120生成擴展名為.espx的新包還包括數據包關系,數據包關系是在往ESPX包添加部件(數據)的時候,自定義名稱添加的,方便在ESPX包里通過關系名稱查找到部件(數據),即將需要簽章的XPS文檔、印章數據、時間戳數據和數據包關系,生成擴展名為.espx的包。
[0018]在步驟120中,印章數據和時間戳數據采用xml (可擴展標記語言)格式,可擴展的標識語言是一種元標注語言,即定義了用于定義其他特定領域有關語義的、結構化的標記語言,這些標記語言將文檔分成許多部件并對這些部件加以標識。XML文檔定義方式有:文檔類型定義(DTD)和XML Schema。DTD定義了文檔的整體結構以及文檔的語法,應用廣泛并有豐富工具支持。XML Schema用于定義管理信息等更強大、更豐富的特征。XML能夠更精確地聲明內容,方便跨越多種平臺的更有意義的搜索結果。它提供了一種描述結構數據的格式,簡化了網絡中數據交換和表示,使得代碼、數據和表示分離,并作為數據交換的標準格式,因此它常被稱為智能數據文檔。簽名文檔ESPX是基于開放打包約定(OPC)數據打包標準的文檔,采用二進制容器文件組織結構,將所有內容打包為一個自定義文件。OPC定義了一種通過標準Zip文件存儲應用程序數據及其相關資源的結構化方法,OPC是一個開放標準,無需對自定義二進制容器文件進行編碼,OPC還支持很多增強功能,其中包括可尋址UR1、MHffi類型、關系構架和身份驗證。
[0019]通過創建自定義數據包類型.ESPX包,對相關的文件進行保存,相關的文件包括XPS文件和XML文件等。數據包是開放打包約定標準的基本存儲單位,在實現.NETFramework 3.0過程中,會將System.10.Packaging.Package定義為抽象類,它將派生出特定的物理實現。.NET Framework 3.0中數據包的主(也是默認)物理實現是使用標準ZIP存檔的ZipPackage派生類。
[0020]步驟140:對espx包進行數字簽名,生成電子印章數字簽名文檔ESPX。
[0021]在本發明的一個【具體實施方式】中,開放打包使用ZIP文件進行打包,ZIP文件是公認的行業通用格式,而且易于使用、檢查和訪問。實際上,可以將打包文件重命名為擴展名為.zip的文件,并使用標準ZIP實用工具(例如Windows Explorer內置的壓縮文件夾)訪問其內容。
[0022]在本發明的一個【具體實施方式】中,數據包包含兩個基本元素=PackageParts (以下稱為部件)和PackageRelat1nships (以下稱為關系)。部件是指正在打包的實際內容,高級組件在基本部件和關系元素上構建而成,其中包括PackageDigitalSignatures、PackageProperties以及支持加密和權限管理的組件。部件是一種數據流,類似于文件系統或ZIP存檔中的文件。部件可包含任意數據類型(二進制)、文本和圖像等等。將部件存儲到數據包中時,會為其定義唯一的URI格式PartName和M頂E ContentType。部件名稱以正斜杠開頭,它根據根數據包定義了一個絕對路徑。只需引用部件唯一的URI部件名稱,即可輕松地將部件添加到數據包中或從中刪除部件、向部件寫入內容、更新部件或從數據包中讀取部件。
[0023]數據包關系定義了以下兩個項目之間的關聯:指定源和指定目標。關系的源可以是數據包本身(數據包級關系),也可以是數據包中的指定部件(部件級關系)。關系的目標可以是數據包中的指定部件,也可以是指定的外部資源。外部資源可以是其他數據包、其他數據包中的部件,也可以是任何其他類型的可尋址URI數據實體。這樣,就可定義四種組合關系:數據包(源)和數據包中指定部件(目標)之間的關系;數據包(源)和數據包外部指定資源(目標)之間的關系;數據包中指定部件(源)和同一數據包中另一指定部件(目標)之間的關系;數據包中指定部件(源)和數據包外部指定資源(目標)之間的關系。源部件可視為關系的所有者,刪除源部件時,該部件擁有的所有關系將同時被刪除,關系定義和存儲于數據包中的特定關系部件中,創建或刪除關系并不會實際改變源元素或目標元素。
[0024]數據包由部件和關系組合構建而成,它還可以包含PackageDigitalSignature項目(簡稱“數字簽名”)。在本發明的