歡迎來到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁 裝配圖網(wǎng) > 資源分類 > DOC文檔下載  

一個簡單的數(shù)字簽名系統(tǒng)的實現(xiàn)[文檔在線提供]

  • 資源ID:60379729       資源大小:391.50KB        全文頁數(shù):28頁
  • 資源格式: DOC        下載積分:16積分
快捷下載 游客一鍵下載
會員登錄下載
微信登錄下載
三方登錄下載: 微信開放平臺登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要16積分
郵箱/手機(jī):
溫馨提示:
用戶名和密碼都是您填寫的郵箱或者手機(jī)號,方便查詢和重復(fù)下載(系統(tǒng)自動生成)
支付方式: 支付寶    微信支付   
驗證碼:   換一換

 
賬號:
密碼:
驗證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會被瀏覽器默認(rèn)打開,此種情況可以點(diǎn)擊瀏覽器菜單,保存網(wǎng)頁到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無水印,預(yù)覽文檔經(jīng)過壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標(biāo)題沒有明確說明有答案則都視為沒有答案,請知曉。

一個簡單的數(shù)字簽名系統(tǒng)的實現(xiàn)[文檔在線提供]

裝訂線一個簡單的數(shù)字簽名系統(tǒng)的實現(xiàn)專業(yè)班級:姓 名:指導(dǎo)教師:計算機(jī)科學(xué)與技術(shù)學(xué)院內(nèi) 容 摘 要計算機(jī)和網(wǎng)絡(luò)技術(shù)的發(fā)展將人類帶入信息化社會,隨之而來的是倍受關(guān)注的信息安全問題。現(xiàn)代密碼學(xué)已成為信息安全技術(shù)的核心,數(shù)字簽名是現(xiàn)代密碼學(xué)主要研究的內(nèi)容之一。數(shù)字簽名技術(shù)在身份識別和認(rèn)證、數(shù)據(jù)完整性、抗抵賴等方面具有其它技術(shù)所無法替代的作用,它在電子商務(wù)和電子政務(wù)等領(lǐng)域有著極廣泛的應(yīng)用。 本論文首先介紹了數(shù)字簽名的研究背景和意義。接著系統(tǒng)介紹了數(shù)字簽名的原理及其相關(guān)技術(shù),包括密碼技術(shù)、簽名算法、單向散列函數(shù)和數(shù)字證書等。然后通過使用Windows和Java安全的相關(guān)內(nèi)容實現(xiàn)數(shù)字簽名在單機(jī)上的模擬來更加深刻地了解其過程。最后是對本論文的總結(jié)。 關(guān)鍵字:數(shù)字簽名;Java安全;數(shù)字證書ABSTRACTHuman beings have entered into the information era with the development of computer and network technologies;Thus, the security problem of information has become the fundamental matter. The modern cryptography is the kernel technique of information security. The digital signature is one of main researches in modern cryptography, and it cannot be substituted by other techniques in information security, including authentication, data integrity, and non-repudiation. Digital signatures have many applications in electronic commerce and electronic government, etc. First, this paper introduces the research background and meaning of the digital signature. Then it introduces systematically the principle of the digital signature and relevant technology, including cryptography technology, signature algorithm, one-way Hash Function and digital certification etc. To understand the course of the digital signature more profound, it realize the simulation of the digital signature under the environment of PC by using the relevant contents of Windows and Java security. Finally, it is the summarization of the paper.Key Words: digital signature ; Java security; digital certification目 錄1 前 言21.1 數(shù)字簽名的研究背景及意義22 了解數(shù)字簽名的原理22.1 什么是數(shù)字簽名22.2 數(shù)字簽名的原理32.3 數(shù)字簽名的過程32.4 數(shù)字簽名的作用43 數(shù)字簽名相關(guān)技術(shù)介紹43.1 密碼技術(shù)43.2 簽名算法53.3 單向散列函數(shù)73.4 數(shù)字證書84 一個簡單的數(shù)字簽名系統(tǒng)的實現(xiàn)84.1 開發(fā)工具選擇84.1.1 關(guān)于Java84.1.2 Java的安全機(jī)制94.2 用Java實現(xiàn)一個簡單的數(shù)字簽名系統(tǒng)94.2.1 創(chuàng)建CA94.2.2 創(chuàng)建代表用戶A的證書134.2.3 用CA簽發(fā)A的證書144.2.4 用戶A發(fā)布簽名了的證書174.2.5 用戶B收到后驗證證書184.2.6 用戶A發(fā)送簽名后的信息194.2.7 用戶B驗證簽名205 總結(jié)22致謝23參考文獻(xiàn)24一個簡單的數(shù)字簽名系統(tǒng)的實現(xiàn)1 前 言1.1 數(shù)字簽名的研究背景及意義 我們知道,一般的書信或者文件等紙質(zhì)文檔是根據(jù)親筆簽名或印章來證明其真實性的。當(dāng)今社會,電子文檔將逐步代替紙質(zhì)的文件成為信息交流的主體。證明某一個電子文件是某作者所作的有效辦法是模擬普通的手寫簽名在電子文檔上進(jìn)行電子簽名,即在電子化文件中添加可以標(biāo)記自己的一段特征數(shù)據(jù)來實現(xiàn)簽名。作者可以通過數(shù)字簽名表明目己的身份,讀者可以通過數(shù)字簽名驗證作者的身份。 電子郵件是互聯(lián)網(wǎng)上最重要的應(yīng)用之一,傳統(tǒng)的電子郵件都是明文傳輸,并且發(fā)送方可以輕松地偽造自己的身份。隨著電子郵件的應(yīng)用擴(kuò)展到各種信息敏感領(lǐng)域,如:政府間來往、商業(yè)談判等,電子郵件的內(nèi)容保密和發(fā)送方身份確認(rèn)的重要性便逐步凸現(xiàn)出來。數(shù)字簽名能很好地解決電子郵件的身份確認(rèn)問題。 電子商務(wù)是互聯(lián)網(wǎng)上發(fā)展最快的應(yīng)用方向,它是借助于互聯(lián)網(wǎng)的快速信息傳輸能力來完成各種商務(wù)活動,包括電子數(shù)據(jù)交換、在線交易系統(tǒng)、網(wǎng)上銀行、商業(yè)增值網(wǎng)等。互聯(lián)網(wǎng)是一個開放的空問,任何人都可以進(jìn)入,而重要的商務(wù)信息具有敏感性和保密性,所以通常的商務(wù)信息在傳輸中要進(jìn)行加密,同時,為了進(jìn)一步防止欺騙性的篡改,數(shù)字簽名是必不可少的。電子商務(wù)活動中的電子訂單、電子帳單、電子收據(jù)、電子合同等電子文檔都需要作數(shù)字簽名以確保真實性。 網(wǎng)頁數(shù)據(jù)是互聯(lián)網(wǎng)上傳輸量最大的數(shù)據(jù),網(wǎng)頁已成為發(fā)布新聞、廣告、招標(biāo)、招聘等各種信息的重要媒體,己經(jīng)開始對社會、經(jīng)濟(jì)、生活產(chǎn)生出一定的影響。這些信息來源的可靠性對相關(guān)人員來說極為重要。 隨著數(shù)字化時代的到來,作為一種重要且有效的信息安全技術(shù)數(shù)字簽名將應(yīng)用到社會的各個領(lǐng)域。2 了解數(shù)字簽名的原理2.1 什么是數(shù)字簽名數(shù)字簽名是由Diffie和Hellman在他們的著名的論文“New Direction in Cryptography”中第一次提出來的。數(shù)字簽名是指附加在數(shù)據(jù)單元上的一些數(shù)據(jù),或是對數(shù)據(jù)單元所作的密碼變換,這種數(shù)據(jù)或變換能使數(shù)據(jù)單元的接收者確認(rèn)數(shù)據(jù)單元的來源和數(shù)據(jù)的完整性,并保護(hù)數(shù)據(jù),防止被人(如接收者)進(jìn)行偽造。簽名機(jī)制的本質(zhì)特征是該簽名只有通過簽名者的私有信息才能產(chǎn)生,也就是說,一個簽名者的簽名只能唯一地由他自己產(chǎn)生。當(dāng)收發(fā)雙方發(fā)生爭議時,第三方(仲裁機(jī)構(gòu))就能夠根據(jù)消息上的數(shù)字簽名來裁定這條消息是否確實由發(fā)送方發(fā)出,從而實現(xiàn)抵賴性安全服務(wù)。數(shù)字簽名是認(rèn)證技術(shù)中的一種,數(shù)字簽名可以用來進(jìn)行下列認(rèn)證: (1)實體認(rèn)證 在報文通信之前,采用可鑒別協(xié)議來認(rèn)證通信是否在議定的通信實體之間進(jìn)行。 (2)報文認(rèn)證 經(jīng)實體認(rèn)證后,雙方通信實體便可進(jìn)行報文通信。為了保證數(shù)據(jù)的真實性,應(yīng)對報文進(jìn)行認(rèn)證,即接收實體應(yīng)能驗證報文的來源、時間性與目的地的真實性。通常也采用數(shù)字簽名等技術(shù)來實現(xiàn)。 (3)身份認(rèn)證 用戶的身份認(rèn)證是許多應(yīng)用系統(tǒng)的第一道防線,目的是防止數(shù)據(jù)被非法用戶訪問。除了口令控制之外,在身份認(rèn)證環(huán)節(jié)采用數(shù)字簽名技術(shù)無疑大大提高了訪問控制的力度。2.2 數(shù)字簽名的原理 手寫簽名一直是紙介質(zhì)文件簽發(fā)者的身份證明,而數(shù)字簽名則是電子信息世界中信息簽發(fā)者不可否認(rèn)的標(biāo)記。數(shù)字簽名通過單向散列(HASH)函數(shù)對要傳送的消息M進(jìn)行處理得到消息摘要(Message Digest) H(M),然后使用消息發(fā)送者的私有密鑰D對摘要加密得到簽名D(H(M)。 數(shù)字簽名中的HASH函數(shù)是一類特殊的散列函數(shù),具有以下特點(diǎn): (1)對接受的輸入消息數(shù)據(jù)沒有長度限制。 (2)對輸入任何長度的消息數(shù)據(jù)能夠生成固定長度的消息摘要H(M)。 (3)易于計算,對于給定的任何消息M將能夠快速地得出H(M)。 (4)單向函數(shù),即給出一HASH值h,難以計算出一特定輸人M,使得h=H(M)。 (5)免沖突,又可分為弱免沖突和強(qiáng)免沖突兩種。弱免沖突指給出一消息M1,找出一消息M2與M1相似且H(M1)=H(M2)是計算不可行的,而強(qiáng)免沖突指找出任意兩條消息M1、M2使H(M1)=H(M2)也是計算不可行的。 滿足上述條件的HASH函數(shù)作用于一長文檔上時,可以產(chǎn)生該文檔的一個“數(shù)字指紋”(Digital Fingerprint),可以用這個結(jié)果來判斷該文檔沒有被修改過。統(tǒng)計表明,如果消息摘要長度為128位時,則任意兩個消息M1、M2具有完全相同摘要的概率為10負(fù)24次方,即近于零的重復(fù)概率。如果取H(M)為384位或512位時,重復(fù)概率則更小。我們知道,如果消息M1與M2相同,則有H(M1)= H(M2),改變M1或M2中的任意一位,其結(jié)果將導(dǎo)致H(M1)與H(M2)中有一半左右對應(yīng)位的值都不相同。通過數(shù)字簽名的發(fā)散特性就可以很容易地發(fā)現(xiàn)消息是否被篡改。2.3 數(shù)字簽名的過程數(shù)字簽名的流程如下:(1)采用散列函數(shù)對原始報文進(jìn)行運(yùn)算,得到一個固定長度的數(shù)字串,即消息摘要。不同的報文所得到的消息摘要各不相同。但對相同的報文,它的消息摘要卻是唯一的。在數(shù)學(xué)上保證,只要改動任何一位,重新計算出來的摘要值就會與原先的值不相符,這樣就保證了報文的不可更改性。 (2)發(fā)送方生成消息摘要,用自己的私存密鑰對摘要進(jìn)行加密來形成發(fā)送方的數(shù)字簽名。 (3)這個數(shù)字簽名將作為報文的附件和報文一起發(fā)給接收方。 (4)接收方首先從接收到的原始報文中用同樣的算法計算出新的消息摘要,再用發(fā)送方的公開密鑰對報文附件的數(shù)字簽名進(jìn)行解密,比較兩個消息摘要。如果相同,接收方就能確認(rèn)數(shù)字簽名是發(fā)送方的,否則就可斷定收到的報文是偽造的或者中途被篡改了。例如:假設(shè)Alice要發(fā)送一份帶有自己簽名的消息M給別人時,她首先對消息M通過HASH函數(shù)進(jìn)行消息摘要得到H(M),再用自己的私有密鑰Da對該值加密,得到對M的簽名Sa(M)后,有Sa(M)=Da(H(M)。接收方收到消息M及簽名Sa(M)后,先計算H(M),然后使用Alice的公開密鑰Ea解密簽名,如消息是完整的,應(yīng)有H(M)=Ea(Sa(M)=Ea(Da(H(M)=H(M)。2.4 數(shù)字簽名的作用數(shù)字簽名提供了一種安全的保障數(shù)據(jù)完整性和真實性的機(jī)制,可以檢驗數(shù)據(jù)從數(shù)據(jù)源到目的地的傳輸過程中是否被篡改以及數(shù)據(jù)的真實來源。因此,它能夠防止下面所示的四類問題: (1)否認(rèn)或抵賴:發(fā)送(接收)者事后不承認(rèn)已發(fā)送(或接收)過這樣一份文件。 (2)偽造:接收者偽造一份來自發(fā)送者的文件。 (3)篡改:接收者對接收者的信息進(jìn)行部分篡改。 (4)冒充:網(wǎng)中的某一用戶冒充另一用戶作為發(fā)送者或接收者。3 數(shù)字簽名相關(guān)技術(shù)介紹3.1 密碼技術(shù)信息安全技術(shù)是一門綜合性學(xué)科,它涉及信息論、計算機(jī)科學(xué)和密碼學(xué)等多方面知識,它的主要任務(wù)是研究計算機(jī)系統(tǒng)和通信網(wǎng)絡(luò)內(nèi)信息的保護(hù)方法以實現(xiàn)系統(tǒng)內(nèi)信息的安全、保密、真實和完整。其中,信息安全的核心是密碼技術(shù)。 隨著計算機(jī)網(wǎng)絡(luò)不斷滲透到各個領(lǐng)域,密碼學(xué)的應(yīng)用也隨之?dāng)U大。數(shù)字簽名、身份鑒別等都是由密碼學(xué)派生出來的新技術(shù)和應(yīng)用。在計算機(jī)上實現(xiàn)的數(shù)據(jù)加密,其加密或解密變換是由密鑰控制實現(xiàn)的。密鑰(Keyword)是用戶按照一種密碼體制隨機(jī)選取,它通常是一隨機(jī)字符串,是控制明文和密文變換的唯一參數(shù)。根據(jù)密鑰類型不同將現(xiàn)代密碼技術(shù)分為兩類:一類是對稱加密(秘密鑰匙加密)系統(tǒng),另一類是公開密鑰加密(非對稱加密)系統(tǒng)。 對稱鑰匙加密系統(tǒng)是加密和解密均采用同一把秘密鑰匙,而且通信雙方都必須獲得這把鑰匙,并保持鑰匙的秘密。 對稱密碼系統(tǒng)的安全性依賴于以下兩個因素。第一,加密算法必須是足夠強(qiáng)的,僅僅基于密文本身去解密信息在實踐上是不可能的;第二,加密方法的安全性依賴于密鑰的秘密性,而不是算法的秘密性,因此,我們沒有必要確保算法的秘密性,而需要保證密鑰的秘密性。對稱加密系統(tǒng)的算法實現(xiàn)速度極快,從高級加密標(biāo)準(zhǔn)(AES)候選算法的測試結(jié)果看,軟件實現(xiàn)的速度都達(dá)到了每秒數(shù)兆或數(shù)十兆比特。對稱密碼系統(tǒng)的這些特點(diǎn)使其有著廣泛的應(yīng)用。因為算法不需要保密,所以制造商可以開發(fā)出低成本的芯片以實現(xiàn)數(shù)據(jù)加密。這些芯片有著廣泛的應(yīng)用,適合于大規(guī)模生產(chǎn)。 對稱加密系統(tǒng)最大的問題是密鑰的分發(fā)和管理非常復(fù)雜、代價高昂。比如對于具有n個用戶的網(wǎng)絡(luò),需要n(n1)/2個密鑰,在用戶群不是很大的情況下,對稱加密系統(tǒng)是有效的。但是對于大型網(wǎng)絡(luò),當(dāng)用戶群很大,分布很廣時,密鑰的分配和保存就成了大問題。對稱加密算法另一個缺點(diǎn)是不能實現(xiàn)數(shù)字簽名。 公開密鑰加密系統(tǒng)采用的加密鑰匙(公鑰)和解密鑰匙(私鑰)是不同的。由于加密鑰匙是公開的,密鑰的分配和管理就很簡單,比如對于具有n個用戶的網(wǎng)絡(luò),僅需要2n個密鑰。公開密鑰加密系統(tǒng)還能夠很容易地實現(xiàn)數(shù)字簽名。因此,最適合于電子商務(wù)應(yīng)用需要。在實際應(yīng)用中,公開密鑰加密系統(tǒng)并沒有完全取代對稱密鑰加密系統(tǒng),這是因為公開密鑰加密系統(tǒng)是基于尖端的數(shù)學(xué)難題,計算非常復(fù)雜,它的安全性更高,但它實現(xiàn)速度卻遠(yuǎn)趕不上對稱密鑰加密系統(tǒng)。在實際應(yīng)用中可利用二者的各自優(yōu)點(diǎn),采用對稱加密系統(tǒng)加密文件,采用公開密鑰加密系統(tǒng)加密“加密文件”的密鑰(會話密鑰),這就是混合加密系統(tǒng),它較好地解決了運(yùn)算速度問題和密鑰分配管理問題。因此,公鑰密碼體制通常被用來加密關(guān)鍵性的、核心的機(jī)密數(shù)據(jù),而對稱密碼體制通常被用來加密大量的數(shù)據(jù)。3.2 簽名算法 數(shù)字簽名算法有映象式和印記式兩類。由于印記式的簽名速度和驗證速度比映象式快得多,因此印記式數(shù)字簽名算法更為實用。下面對幾種實用的印記式數(shù)字簽名算法及其應(yīng)用進(jìn)行論述。 (1)RSA數(shù)字簽名算法 產(chǎn)生簽名與驗證參數(shù): Stepl 簽名人A選擇兩個大素數(shù)p、q,計算n=pq及fi(n) = (p-1)(q-1); Step2 尋找e、d屬于Zn使?jié)M足(e,fi(n)=1及ed=1(mod fi(n); Step3 公開驗證參數(shù)n,e, A保存p,q,d,fi(n)作為秘密的簽名參數(shù); Step4 選用一通用的散列函數(shù)h( )。 簽名算法: Stepl A將需簽名的文件m(含接收人、內(nèi)容、簽名人、日期等)編碼后映射成h(m); Step2 計算c1=(h(m)的d次方 mod p, c2=(h(m)的d次方mod q及印記Sa(m)=(c1q1q+c2p1p) mod n,其中q1q=1 mod p,p1p=1 mod q; Step3 將m, Sa(m)發(fā)送至文件接收人B或仲裁人T(A、 B、T的含義下同)。 驗證算法: B(或T)檢驗(Sa(m)的e次方=h(m) mod n是否成立,若成立則接收此文件及簽名,否則拒絕接收或宣布無效。 (2)Rabin數(shù)字簽名算法 產(chǎn)生簽名與驗證參數(shù): Step1 A選擇兩個大素數(shù)p、q,并計算n=pq; Step2 公開驗證參數(shù)n,A保存p,q作為秘密的簽名參數(shù); Step3 選用一通用的散列函數(shù)h( )。 簽名算法: Step1 A將需簽名的文件m編碼后映射成h(m),選取a=bh(m)使?jié)M足(a/p)=( b/q)=1, b屬于1,-1,2,-2,其中(/)為Legendre符號; Step2 計算c1=+a的(p+1)/4次方mod p,c2=+a的(q+1)/4次方mod q及印記Sa(m)=(c1q1q+c2p1p) mod n。其中c1、c2固定一種取法,p1、p2滿足q1q=1 mod p,p1p= 1 mod q; Step3 將m,Sa(m),b發(fā)送至B或T。 驗證算法: B(或T)檢驗(Sa(m)的二次方=bh(m) mod n是否成立,若成立則接收此文件及簽名,否則拒絕接收或宣布無效。(3)DSS數(shù)字簽名算法 產(chǎn)生簽名與驗證參數(shù): Stepl A選擇一個大素數(shù)p, p-1應(yīng)具有大素數(shù)因子q,選擇一個g屬于Zp使g的次數(shù)為q,再選擇一個x屬于Zp,并計算y=g的x次方mod p; Step2 公開驗證參數(shù)p, q, g, y), A保存x作為秘密的簽名參數(shù); Step3 選用一通用的散列函數(shù)h( )。 簽名算法: Stepl A將需簽名的文件m編碼后映射成h(m),任意選擇k屬于Zp,計算k的-1次方使k的-1次方k=1 mod q; Step2 計算r=(g的k次方mod p) mod q及s=k的-1次方(h(m)+xr) mod q; Step3 將m, r, s)發(fā)送至B或T。 驗證算法: Stepl B(或T)先計算u=h(m)s的-1次方 mod q及v=rs的-1 次方mod q; Sten2 檢驗(g的u次方y(tǒng)的v次方 mod p) mod q=r是否成立,若成立則接收此文件及簽名,否則拒絕接收或宣布無效。 簽名算法的比較:(1)安全性 由于求解mod n (n = pq)的平方根問題以高概率等價于n的整數(shù)分解問題(Rabin定理),所以Rabin算法的安全性與RSA大體相當(dāng)。DSS的安全性是建立在求離散對數(shù)問題上,至今雖未證明破解DSS與求解q階乘法群的離散對數(shù)等價,但也未找到其他可繞開求離散對數(shù)的解法。整數(shù)分解與求離散對數(shù)的計算復(fù)雜度是近似的,因而上述三種簽名算法的安全性大體相當(dāng)。 (2)參數(shù)選擇DSS算法參數(shù)的選擇比前兩種算法要容易。RSA算法出于安全性考慮,對參數(shù)p、q的選擇有一些較嚴(yán)格的要求,如p-kq(k為較小自然數(shù))應(yīng)足夠大、gcd(p-1,q-1)應(yīng)比較小、p+1和q+1都應(yīng)至少含有一個充分大的素數(shù)因子等;Rabin算法對參數(shù)p、q的要求與RSA算法大體相同,但為了達(dá)到與RSA相當(dāng)?shù)陌踩?,其參?shù)p、q應(yīng)比RSA算法中稍大;DSS算法安全性的關(guān)鍵參數(shù)是q,可比前兩種算法中的n值略小,但應(yīng)遠(yuǎn)大于單獨(dú)的p和q,其他參數(shù)雖多但都不難選取。 (3)參數(shù)共享性 RSA算法和Rabin算法都無法共享參數(shù):因為DSS算法可以對k有不同選擇,所以可以共享參數(shù)p、q、g,參數(shù)共享時至今尚未發(fā)現(xiàn)用戶之間可以互相傷害的途徑。 (4)簽名速度 DSS算法簽名速度較慢。RSA算法和Rabin算法簽名時耗費(fèi)時間的主要部分都是mod p、mod q的指數(shù)運(yùn)算,這兩種算法簽名速度大體相同:DSS算法簽名時mod p(p>q)的指數(shù)運(yùn)算所耗費(fèi)的時間要比前兩種算法長。(5)驗證速度 DSS算法驗證速度較慢。Rabin算法驗證時需進(jìn)行一次mod n的平方運(yùn)算,而RSA算法驗證時需進(jìn)行一次mod n的e次指數(shù)運(yùn)算,因此RSA算法比Rabin算法要稍慢;DSS算法驗證時需要進(jìn)行2次mod p的指數(shù)運(yùn)算,因此DSS算法驗證速度較前兩種算法慢,而Rabin算法驗證速度最快。 (6)簽名印記長度 DSS算法簽名印記較長。RSA算法和Rabin算法的簽名印記都是一個mod n數(shù)Sa(m),只是Rabin算法多了1個很小的數(shù)b;DSS算法的簽名印記是兩個mod q數(shù)r、s,比起前兩種算法的印記Sa(m)要長一些。 (7)簽名印記的重復(fù)性 DSS算法簽名印記具有不重復(fù)特性。文件m和h(m)完全相同時,用DSS算法簽名時因每次可以選擇不同的k產(chǎn)生簽名印記,故DSS算法的簽名印記每次可以不同;RSA算法和Rabin算法無此特性,但可以對算法作適當(dāng)改進(jìn),以增加1個隨機(jī)數(shù)加長傳送的數(shù)據(jù)為代價,使算法具有簽名印記不重復(fù)的特性。 Java類庫中已包含了實現(xiàn)一些著名簽名算法(如RSA、DSA等)的類庫,可以直接使用,這也是算法公開的好處。3.3 單向散列函數(shù)密碼學(xué)中使用的單向散列函數(shù)將任意長度的消息壓縮到某一固定長度的消息摘要。單向散列函數(shù)又稱為單向Hash函數(shù),它不是加密算法,卻在密碼學(xué)中有著廣泛的應(yīng)用,與各種加密算法有著密切的關(guān)系。它的模型為:=()其中,是待處理的明文,可以為任意長度;是單向散列函數(shù),是生成的報文摘要,它具有固定的長度,并且和的長度無關(guān)。其中具有以下的單向性質(zhì):(1)給定和,很容易計算;(2)給定和,很難計算,甚至得不到的任何消息;(3)給定,要找兩個不同的1和2,使得(1)=(2)在計算上是不可行的。根據(jù)單向散列函數(shù)的安全水平,可以將單向散列函數(shù)分成兩類:強(qiáng)碰撞自由的單向散列函數(shù)和弱碰撞自由的單向散列函數(shù)。上面描述的是強(qiáng)碰撞自由的單向散列函數(shù)的性質(zhì)。如果將第(3)條改為:給定和一個已知的消息,找另外一個不同的消息1,使得()=(1)在計算上是不可行的,就叫做弱碰撞自由的單向散列函數(shù)。顯然強(qiáng)碰撞自由的單向散列函數(shù)比弱碰撞自由的單向散列函數(shù)安全性要高。因為弱碰撞自由的單向散列函數(shù)隨著重復(fù)使用次數(shù)的增加安全性逐漸降低,強(qiáng)碰撞自由的單向散列函數(shù)則不會因其重復(fù)使用而降低安全性。因此在實際中要求使用強(qiáng)碰撞自由的單向散列函數(shù)。除此之外,在實際應(yīng)用中還要求單向散列函數(shù)具有如下特點(diǎn):(1)單向散列函數(shù)能夠處理任意長度的明文(至少是在實際應(yīng)用中可能碰到的長度的明文),其生成的消息摘要數(shù)據(jù)塊長度具有固定的大小,而且,對同一個消息反復(fù)執(zhí)行該函數(shù)總是得到相同的信息摘要。(2)單向散列函數(shù)生成的信息摘要是不可預(yù)見的,消息摘要看起來和原始的數(shù)據(jù)沒有任何的關(guān)系。而且,原始數(shù)據(jù)的任何微小變化都會對生成的信息摘要產(chǎn)生很大的影響。(3)具有不可逆性,即通過生成的報文摘要得到原始數(shù)據(jù)的任何信息在計算上是完全不可行的。單向散列函數(shù)在密碼學(xué)中有著非常廣泛的應(yīng)用,它被廣泛地應(yīng)用于數(shù)字簽名、消息的完整性鑒別、消息的起源認(rèn)證等,另外也和各種密碼算法一起構(gòu)成混合密碼系統(tǒng)。3.4 數(shù)字證書數(shù)字證書是駕駛執(zhí)照、護(hù)照及會員卡等類似證件的電子對應(yīng)物。您可以通過出示電子數(shù)字證書等來證明您的身份或訪問在線信息或使用服務(wù)的權(quán)力。數(shù)字證書將身份綁定到一對可以用來加密和簽名數(shù)字信息的電子密鑰。數(shù)字證書能夠驗證一個人使用給定密鑰的權(quán)利。這有助于防止有人利用假密鑰冒充其他用戶。數(shù)字證書與加密一起使用,可以提供一個更加完整的解決方案,確保交易中各方的身份。數(shù)字證書通常簡稱為證書,它包括一個公開密鑰、擁有對應(yīng)私有密鑰的實體身份以及證書管理機(jī)構(gòu)CA(Certification Authority)對這些內(nèi)容的數(shù)字簽名。CA的簽名可以確保證書內(nèi)容的完整性和真實性。證書的格式一般遵循國際電信同盟ITU(International Telecommunications Union) 制訂的 X.509標(biāo)準(zhǔn),其具體字段及說明如表3.1所示:表3.1 X.509數(shù)字證書字段名及說明Version版本號Serial number證書唯一序列號Signature algorithm ID簽名使用算法Issuer nameCA名Validity period證書生效日期和失效日期Subject(user) name持證人姓名Subject public key information持證人公開密鑰信息Issuer unique identifierCA唯一標(biāo)識(僅在v2、v3中)Subject unique identifier持證人唯一標(biāo)識(僅在v2、v3中)Extensions擴(kuò)充內(nèi)容(僅在v3中)Signature on the above fieldCA對證書的簽名采用數(shù)字證書能夠?qū)崿F(xiàn)以下兩點(diǎn):(1)保證信息是由簽名者自己簽發(fā)的,簽名者不能否認(rèn)或難以否認(rèn)。(2)保證信息自簽發(fā)后到收到為止未曾做過任何修改,簽發(fā)的信息是真實信息。4 一個簡單的數(shù)字簽名系統(tǒng)的實現(xiàn)4.1 開發(fā)工具選擇4.1.1 關(guān)于Java 1995年,美國Sun Microsystems公司正式向IT業(yè)界推出了Java語言,該語言具有安全、跨平臺、面向?qū)ο?、簡單、適用于網(wǎng)絡(luò)等顯著特點(diǎn),當(dāng)時以web為主要形式的互聯(lián)網(wǎng)正在迅猛發(fā)展,Java語言的出現(xiàn)迅速引起所有程序員和軟件公司的極大關(guān)注,程序員們紛紛嘗試用Java語言編寫網(wǎng)絡(luò)應(yīng)用程序,并利用網(wǎng)絡(luò)把程序發(fā)布到世界各地進(jìn)行運(yùn)行。包括IBM、Oracle、微軟、Nets cape、Apple、SGI等大公司紛紛與Sun Microsystems公司簽訂合同,授權(quán)使用Java平臺技術(shù)。微軟公司總裁比爾蓋茨先生在經(jīng)過研究后認(rèn)為“Java語言是長時間以來最卓越的程序設(shè)計語言”。目前,Java語言已經(jīng)成為最流行的網(wǎng)絡(luò)編程語言,截止到2001年中,全世界大約有310萬Java程序員,許多大學(xué)紛紛開設(shè)Java課程,Java正逐步成為世界上程序員最多的編程語言。在經(jīng)歷了以大型機(jī)為代表的集中計算模式和以PC機(jī)為代表的分散計算模式之后,互聯(lián)網(wǎng)的出現(xiàn)使得計算模式進(jìn)入了網(wǎng)絡(luò)計算時代。網(wǎng)絡(luò)計算模式的一個特點(diǎn)是計算機(jī)是異構(gòu)的,即計算機(jī)的類型和操作系統(tǒng)是不一樣的,例如SUN工作站的硬件是SPARC體系,軟件是UNIX中的Solaris操作系統(tǒng),而PC機(jī)的硬件是INTEL體系,操作系統(tǒng)是windows或者是Linux,因此相應(yīng)的編程語言基本上只是適用于單機(jī)系統(tǒng),例如COBOL、FORTRAN、C、C等等;網(wǎng)絡(luò)計算模式的另一個特點(diǎn)是代碼可以通過網(wǎng)絡(luò)在各種計算機(jī)上進(jìn)行遷移,這就迫切需要一種跨平臺的編程語言,使得用它編寫的程序能夠在網(wǎng)絡(luò)中的各種計算機(jī)上能夠正常運(yùn)行,Java就是在這種需求下應(yīng)運(yùn)而生的。正是因為Java語言符合了互聯(lián)網(wǎng)時代的發(fā)展要求,才使它獲得了巨大的成功。Java語言最重要的特點(diǎn)是從設(shè)計伊始它就是一種獨(dú)立于硬件設(shè)備的語言。Java程序可以不加修改地運(yùn)行在任何支持Java 的計算機(jī)上。所以,用Java編制軟件還有一個顯而易見的優(yōu)勢,就是整個軟件、無須重新修改和編譯就可在NT、Unix、Linux等支持Java的平臺上運(yùn)行。4.1.2 Java的安全機(jī)制Java提供了幾種安全機(jī)制,其中兩種主要的機(jī)制是安全管理器和Java類文件認(rèn)證器。安全管理器是安全的實施者,它是一個可擴(kuò)展類,提供加在應(yīng)用程序和特寫系統(tǒng)上的安全措施。它實現(xiàn)Java虛擬機(jī)的安全策略。安全管理器建立Java程序的名空 間,限制對網(wǎng)絡(luò)、 本地文件系統(tǒng)和程序其它部分的訪問(程序的名空間是由操作系統(tǒng)或這里的Java虛擬機(jī)所 建立的程序邊界,該程序無法訪問名空間以外的資源)。Java認(rèn)證器在.class文件運(yùn)行前完成該文件的安全檢查,確保Java字節(jié)碼符合Java 虛擬機(jī)規(guī)范。Java平臺通過使用認(rèn)證器查看類文件的句法和詞法正確性,檢查版本及API符合性等,保證病毒和其它惡意程序不會侵犯本地系統(tǒng)。認(rèn)證器包括四個階段的操作:類文件認(rèn)證、類型系統(tǒng)認(rèn)證、字節(jié)碼認(rèn)證和運(yùn)行時類型與訪問檢查。此外,認(rèn)證器在檢查期間還能識別算法操作的上溢和下溢等其他可能發(fā)生在運(yùn)行期間的程序錯誤。4.2 用Java實現(xiàn)一個簡單的數(shù)字簽名系統(tǒng) 我們用Java來實現(xiàn)一個簡單的數(shù)字簽名系統(tǒng)。用戶A要與用戶B進(jìn)行通信,需要先把自己的公鑰發(fā)送給用戶B,但此公鑰未得到證明,也就是說用戶A的身份未得到證實,因此用戶A首先要創(chuàng)建一個代表自己身份的證書,由認(rèn)證中心簽名后發(fā)布數(shù)字證書。以后用戶A就可以用其私鑰對所發(fā)送的信息進(jìn)行簽名了。但我們只是為了簡單地模擬一下這個過程,而不需要真的去認(rèn)證證書,因此首先模擬創(chuàng)建一個CA。4.2.1 創(chuàng)建CA(1)創(chuàng)建代表CA的證書 使用J2SDK提供的keytool工具用RSA算法和在指定的密鑰庫mykeystore中創(chuàng)建公鑰/私鑰對和證書。 在命令行中輸入“keytool -genkey -alias CA -keyalg RSA -keysize 1024 -keystore mykeystore -validity 4000”將使用RSA算法生成1024位的公鑰/私鑰對及整數(shù),密鑰長度為1024位,證書有效期為4000天。使用的密鑰庫為mykeystore文件。如圖4.1所示。圖4.1 創(chuàng)建密鑰庫mykeystore由于當(dāng)前目錄下沒有mykeystore文件,因此以上操作將在當(dāng)前目錄建立文件名為mykeystore的文件。(2)將數(shù)字證書導(dǎo)出到文件使用J2SDK提供的keytool工具將證書從密鑰庫導(dǎo)出為編碼過的文件。 使用keytool的-export參數(shù)可以將別名指定的證書導(dǎo)出到文件,文件名通過-file參數(shù)指定。如圖4.2所示。 圖4.2則當(dāng)前目錄下將增加一個文件CA.cer,其內(nèi)容是編碼過的,可以在屏幕上顯示、拷貝或打印。如圖4.3所示。 圖4.3 編碼后的證書內(nèi)容(3)安裝CA的證書現(xiàn)在存在一個CA, 全名是“CN=Gao Dong, OU=CS, O=DLMU, L=ZB, ST=Shanghai, C=CN”,簡稱“CA”。在計算機(jī)中的身份以證書CA.cer來代表, 隨證書一起創(chuàng)建的還有和證書中的公鑰相對應(yīng)的私鑰,全部保存在密鑰庫mykeystore中,別名為CA。該證書的文本如圖4所示??梢酝ㄟ^電子郵件、網(wǎng)頁或蓋有公章的正式文件確定如圖4所示的文件CA.cer是權(quán)威的,在部門或單位內(nèi)部是值得信任的,并可將其認(rèn)證指紋(即消息摘要,拇?。┕肌S脩舻玫紺A自身的證書后,可以將證書安裝在計算機(jī)操作系統(tǒng)中,以便計算機(jī)自動檢驗其他證書是否值得信任。雙擊導(dǎo)出的證書文件CA.cer,出現(xiàn)圖4.5所示的證書窗口:圖4.5 CA的證書點(diǎn)擊窗口中的“安裝證書”按鈕,出現(xiàn)圖4.6所示的“證書導(dǎo)入向?qū)А贝翱凇?圖4.6 “證書導(dǎo)入向?qū)А贝翱邳c(diǎn)擊其中的“下一步”按鈕,出現(xiàn)圖4.7所示的“證書存儲”的窗口。圖4.7 “證書存儲”的窗口不妨使用該窗口的默認(rèn)選擇:“根據(jù)證書類型,自動選擇證書存儲區(qū)”,繼續(xù)點(diǎn)擊其中的“下一步”按鈕,出現(xiàn)圖4.8所示的“正在完成證書導(dǎo)入向?qū)А钡奶崾尽?圖4.8 “正在完成證書導(dǎo)入向?qū)А钡奶崾驹摯翱陲@示證書將被存儲到“受信任的根目錄證書發(fā)行機(jī)構(gòu)”區(qū)域,這樣,以后操作系統(tǒng)將自動信任由CA.cer證書簽發(fā)的其他證書。點(diǎn)擊其中的“完成”按鈕,出現(xiàn)最后的確認(rèn)窗口,如圖4.9所示。圖4.9 最后核實證書的窗口 如果懷疑該證書是否正確,可以再核實一遍該窗口中顯示的拇印,確認(rèn)后點(diǎn)擊其中的“是”按鈕,最后提示導(dǎo)入成功。 至此,將代表CA“Gao Dong”的證書文件CA.cer安裝在機(jī)器中,以便在計算機(jī)中確立CA.cer證書的權(quán)威性。4.2.2 創(chuàng)建代表用戶A的證書此操作與創(chuàng)建CA證書相似,在當(dāng)前目錄生成一個密鑰庫文件Akeystore。在命令行中輸入“keytool -genkey -alias A -keyalg RSA -keysize 1024 -keystore Akeystore -validity 3500”將使用RSA算法生成1024位的公鑰/私鑰對及整數(shù),密鑰長度為1024位,證書有效期為3500天。如圖4.10所示。圖4.10 創(chuàng)建密鑰庫Akeystore 將此密鑰庫中的A條目對應(yīng)的證書導(dǎo)出到文件A.cer中。如圖4.11所示。 圖4.11 該證書內(nèi)容如圖4.12所示:圖4.12 證書內(nèi)容 4.2.3 用CA簽發(fā)A的證書CA簽發(fā)數(shù)字證書應(yīng)該使用自己的私鑰,CA自身的證書中并不包含私鑰信息,因此需從密鑰庫mykeystore中提取。此外,由于被簽發(fā)的證書還需要知道CA的名字,這可以從CA的證書中獲得。簽發(fā)證書實際上是創(chuàng)建了一個新的證書,使用J2SDK內(nèi)部使用的sun.security.x509包中的X509CertImpl類來創(chuàng)建新的證書,該類的構(gòu)造器中傳入有關(guān)新的證書各種信息,主要信息來自被簽發(fā)的A.cer,只是對某些必須修改的信息如序列號、有效期、簽發(fā)者等進(jìn)行重新設(shè)置。最后使用X509CertImpl類的sign( )方法用CA的私鑰進(jìn)行簽名??梢源蛴⌒碌淖C書的信息,也可以將其保存在密鑰庫中。完整代碼如下:import java.io.*;import java.security.*;import java.security.cert.*;import java.util.*;import java.math.*;import sun.security.x509.*;public class SignCert public static void main(String args ) throws Exception char storepass="000000".toCharArray( ); char cakeypass="000000".toCharArray( ); String alias="CA" String name="mykeystore" /從密鑰庫讀取CA的證書 FileInputStream in=new FileInputStream(name); KeyStore ks=KeyStore.getInstance("JKS"); ks.load(in,storepass); java.security.cert.Certificate c1=ks.getCertificate(alias); /從密鑰庫讀取CA的私鑰PrivateKey caprk=(PrivateKey)ks.getKey(alias,cakeypass);in.close(); /從CA的證書中提取簽發(fā)者信息 byte encod1=c1.getEncoded(); X509CertImpl cimp1=new X509CertImpl(encod1); X509CertInfo cinfo1=(X509CertInfo)cimp1.get(X509CertImpl.NAME+"."+X509CertImpl.INFO); X500Name issuer=(X500Name)cinfo1.get(X509CertInfo.SUBJECT+"."+CertificateIssuerName.DN_NAME); /獲取待簽發(fā)的證書 CertificateFactory cf=CertificateFactory.getInstance("X.509"); FileInputStream in2=new FileInputStream(args0); java.security.cert.Certificate c2=cf.generateCertificate(in2);in2.close(); /從待簽發(fā)的證書提取證書信息byte encod2=c2.getEncoded(); X509CertImpl cimp2=new X509CertImpl(encod2); X509CertInfo cinfo2=(X509CertInfo)cimp2.get( X509CertImpl.NAME+"."+X509CertImpl.INFO); /設(shè)置新證書有效期 Date begindate =new Date();/3000 day Date enddate =new Date(begindate.getTime()+3000*24*60*60*1000L); CertificateValidity cv=new CertificateValidity(begindate,enddate); cinfo2.set(X509CertInfo.VALIDITY,cv); /設(shè)置新證書序列號 int sn=(int)(begindate.getTime()/1000); CertificateSerialNumber csn=new CertificateSerialNumber(sn); cinfo2.set(X509CertInfo.SERIAL_NUMBER,csn); /設(shè)置新證書簽發(fā)者 cinfo2.set(X509CertInfo.ISSUER+"."+CertificateIssuerName.DN_NAME,issuer); /設(shè)置新證書算法信息 AlgorithmId algorithm = new AlgorithmId(AlgorithmId.md5WithRSAEncryption_oid); cinfo2.set(CertificateAlgorithmId.NAME+"."+CertificateAlgorithmId.ALGORITHM, algorithm); /創(chuàng)建證書并使用CA的私鑰對其簽名 X509CertImpl newcert=new X509CertImpl(cinfo2); newcert.sign(caprk,"MD5WithRSA"); System.out.println(newcert); /將新證書存入密鑰庫 ks.setCertificateEntry("A_signed", newcert) ; FileOutputStream out=new FileOutputStream("newstore"); ks.store(out,"newpass".toCharArray(); out.close(); 程序中添加了打印語句將新創(chuàng)建的證書的相關(guān)信息在屏幕上打印出來。在當(dāng)前目錄下存放密鑰庫mykeystore,其中包含了CA的證書。當(dāng)前目錄下同時有證書A.cer,簽發(fā)之前假定我們已經(jīng)核實過A.cer中包含的信息,確認(rèn)無誤,接下來我們開始用CA對該證書進(jìn)行簽名。輸入“java SignCert A.cer >1.txt”運(yùn)行程序,則程序?qū)拿荑€庫中取出CA的私鑰對A.cer證書進(jìn)行簽名,輸出結(jié)果已重定向到文件1.txt中,打開1.txt文件,可以看到如圖4.13有關(guān)新的證書的信息。 圖4.13 新證書的內(nèi)容從中可以看出簽發(fā)者已經(jīng)由原先的“CN=A, OU=CS, O=DLMU, L=DL, ST=LN, C=CN”(自己給自己簽名),變?yōu)榱耍骸癈N=Gao Dong, OU=CS, O=DLMU, L=DL, ST=LN, C=CN”(CA的簽名)。有效期也設(shè)置成了3000天。新的證書同時由密鑰保存在了密鑰庫newstore中。4.2.4 用戶A發(fā)布簽名了的證書將新的證書A_signed從密鑰庫newstore中導(dǎo)出,如圖4.14。圖4.14這樣簽名后的數(shù)字證書將被導(dǎo)出到文件A_signed.cer,可以將該文件E-mail給對方,也可以用Windows的記事本打開該證書文件,將其編碼內(nèi)容通過E-mail或Web等方式發(fā)布。其他人只要將其文本粘貼下來,保存到文件名以“.cer”為后綴的文本文件中即可。該證書內(nèi)容如圖4.15所示:圖4.15 證書內(nèi)容在Windows中雙擊該文件,將出現(xiàn)圖4.16所示的證書窗口。圖4.16和圖4.12相比,它不再有“CA證書不受信任”的警告,這是因為我們已經(jīng)在機(jī)器中安裝了其發(fā)行機(jī)構(gòu)的證書:CA.cer。此外,圖4.16中還可以看出其顯示的頒發(fā)者已經(jīng)是Gao Dong,而不是圖4.12所示的自己給自己簽名(自簽名證書)。4.2.5 用戶B收到后驗證證書 使用X509Certificate類型的對象可以方便地檢驗證書在某個日期是否有效,只要執(zhí)行其checkValidity( )方法,方法的參數(shù)中傳入日期。若已經(jīng)過期,則程序會生成CertificateExpiredException異常,若尚未開始生效,則生成CertificateNotYetValid異常。完整代碼如下:import java.io.*;import java.security.*;import java.security.cert.*;import java.util.*;public class CheckCertValid public static void main(String args ) throws Exception /獲取X509Certificate類型的對象 CertificateFactory cf=CertificateFactory.getInstance("X.509"); FileInputStream in=new FileInputStream(args0); java.security.cert.Certificate c=cf.generateCertificate(in); in.close(); X509Certificate t=(X509Certificate) c; /獲取日期 Calendar cld=Calendar.getInstance(); int year=Integer.parseInt(args1); int month=Integer.parseInt(args2)-1; / as 0 is Jan int day=Integer.parseInt(args3); cld.set(year,month,day); Date d=cld.getTime(); System.out.println(d); try /檢驗有效期 t.checkValidity(d); System.out.println("OK"); catch(CertificateExpiredException e) /過期 System.out.println("Expired"); System.out.println(e.getMessage(); catch(CertificateNotYetValidException e) /尚未生效 System.out.println("Too early"); System.out.println(e.getMessage(); 在當(dāng)前目錄下保存要檢驗的證書CA.cer,A.cer,A_signed.cer。如A_signed.cer有效期是2005年6月8日至2013年8月25日,則可輸入如下幾個命令測試程序。輸入“java CheckCertValid A_signed.cer 2005 6 7”運(yùn)行程序檢測證書A_signed.cer在2005年6月7日是否有效,屏幕輸出如下:輸入“java CheckCertValid A_signed.cer 2007 6 16”運(yùn)行程序檢測證書A_signed.cer在2007年6月16日是否有效,屏幕輸出如下:輸入“java CheckCertValid A_signed.cer 2013 11 18”運(yùn)行程序檢測證書A_signed.cer在2013年11月18日是否有效,屏幕輸出如下:4.2.6 用戶A發(fā)送簽名后的信息 使用從密鑰庫文件Akeystore中得到的私鑰對文件msg.dat中的信息進(jìn)行簽名。簽名將保存在文件sign.dat中。 javax. security包中的Signature類提供了進(jìn)行數(shù)字簽名的方法。Signature對象的initSign( )方

注意事項

本文(一個簡單的數(shù)字簽名系統(tǒng)的實現(xiàn)[文檔在線提供])為本站會員(伴***)主動上傳,裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng)(點(diǎn)擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因為網(wǎng)速或其他原因下載失敗請重新下載,重復(fù)下載不扣分。




關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!