欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      數(shù)字簽名方案的實(shí)現(xiàn)

      時(shí)間:2019-05-12 20:36:40下載本文作者:會員上傳
      簡介:寫寫幫文庫小編為你整理了多篇相關(guān)的《數(shù)字簽名方案的實(shí)現(xiàn)》,但愿對你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫還可以找到更多《數(shù)字簽名方案的實(shí)現(xiàn)》。

      第一篇:數(shù)字簽名方案的實(shí)現(xiàn)

      數(shù)字簽名方案的實(shí)現(xiàn)

      歐家權(quán)、應(yīng)用數(shù)學(xué)、2111011451

      一:數(shù)字簽名的背景

      隨著信息、電子技術(shù)的迅速發(fā)展,全球己步入信息社會。由于整個(gè)社會將形成一個(gè)巨大的計(jì)算機(jī)網(wǎng)絡(luò),任何部門的計(jì)算機(jī)網(wǎng)絡(luò)一旦出現(xiàn)安全問題,都會直接影響到整個(gè)國家的網(wǎng)絡(luò)安全,所以計(jì)算機(jī)網(wǎng)絡(luò)安全問題已引起了各國的高度重視。

      隨著我國信息化進(jìn)程的加快,網(wǎng)絡(luò)化將向各經(jīng)濟(jì)部門、政府機(jī)關(guān)、軍隊(duì)、學(xué)校和社會團(tuán)體等方向延伸,先進(jìn)的計(jì)算機(jī)系統(tǒng)能把整個(gè)社會乃至軍隊(duì)聯(lián)結(jié)起來。計(jì)算機(jī)作為國家的關(guān)鍵基礎(chǔ)設(shè)施和戰(zhàn)略命脈,其安全狀況直接影響到國家的安全和發(fā)展。加密技術(shù)是保證信息安全的關(guān)鍵技術(shù),其理論是信息安全的核心內(nèi)容之一。密碼學(xué)是一門古老而又年輕的學(xué)科,1949年以前,密碼學(xué)是一種藝術(shù)而并不是作為一門嚴(yán)格的科學(xué)存在。1949年shannon[’]發(fā)表的“保密系統(tǒng)的信息理論”一文為私鑰密碼系統(tǒng)建立了理論基礎(chǔ),從此密碼學(xué)成為了一門科學(xué)。而1976年Diffie和Hellman[2]的“密碼學(xué)的新方向”則開創(chuàng)了公鑰密碼學(xué)的新紀(jì)元。

      目前的數(shù)據(jù)加密、數(shù)字簽名、消息認(rèn)證等技術(shù)都是以密碼技術(shù)作為基礎(chǔ)設(shè)計(jì)出來的。隨著信息化的高速發(fā)展,密碼學(xué)理論的研究和應(yīng)用越來越受到重視。數(shù)字簽名的概念由Diffie和Hellman提出,是現(xiàn)代密碼學(xué)最重要最基本的概念之一。數(shù)字簽名的設(shè)計(jì)思想等同于手寫簽名,即將簽名者的身份與其簽署的消息綁定,表示某人已對某消息進(jìn)行了簽字。任何的驗(yàn)證者均能驗(yàn)證消息確實(shí)為簽名者所簽署,而偽造一個(gè)合法用戶的簽名卻是困難的。數(shù)字簽名是實(shí)現(xiàn)數(shù)字通信中可認(rèn)證性、完整性和不可否認(rèn)性的重要密碼技術(shù),是應(yīng)用最為廣泛的公鑰密碼技術(shù)之一。

      綜上所述,數(shù)字簽名的應(yīng)用范圍相當(dāng)廣泛,而數(shù)字簽名最重要的應(yīng)用之一就是數(shù)字版權(quán)管理系統(tǒng)的應(yīng)用。隨著網(wǎng)絡(luò)和數(shù)字技術(shù)的快速發(fā)展,以數(shù)字形式存在的產(chǎn)品在人們的日常工作、學(xué)習(xí)和生活中占據(jù)越來越重要的地位。這些數(shù)字產(chǎn)品包括:電影、音樂、圖片、電視、軟件、書籍、期刊等,我們通稱之為數(shù)字內(nèi)容。數(shù)字內(nèi)容通常都是有版權(quán)的,版權(quán)所有者銷售數(shù)字內(nèi)容并希望獲得最大的經(jīng)濟(jì)收益。然而,數(shù)字內(nèi)容的數(shù)字特性在為合法的用戶提供存儲、傳輸、處理等便利性的同時(shí),也為盜版者的盜版行為提供了捷徑。如果不采取有效的措施,盜版者就可以將數(shù)字內(nèi)容精確復(fù)制并通過互聯(lián)網(wǎng)絡(luò)傳播,版權(quán)所有者的利益將受到嚴(yán)重的侵害。

      如何通過技術(shù)手段來保護(hù)數(shù)字內(nèi)容的版權(quán)己成為近年來工業(yè)界和學(xué)術(shù)界研究的熱點(diǎn)問題,許多開放的或?qū)S械臄?shù)字內(nèi)容保護(hù)系統(tǒng)被提出來并得到不同程度的應(yīng)用。數(shù)字內(nèi)容保護(hù)技術(shù)是對各類數(shù)字內(nèi)容的知識產(chǎn)權(quán)進(jìn)行保護(hù)的一系列軟硬件技術(shù),合理地使用這些技術(shù)能夠有效平衡數(shù)字內(nèi)容價(jià)值鏈中各參與方的利益和需求,帶動數(shù)字內(nèi)容制作、消費(fèi)電子和信息技術(shù)等產(chǎn)業(yè)的發(fā)展,并有助于開展新的商業(yè)模式,促進(jìn)整個(gè)數(shù)字內(nèi)容市場的發(fā)展和信息的傳播,具有廣泛的經(jīng)濟(jì)和社會意義。

      因此,基于數(shù)字簽名技術(shù)與數(shù)字版權(quán)保護(hù)技術(shù)的特點(diǎn)與共性,研究數(shù)字簽名理論在數(shù)字版權(quán)管理系統(tǒng)中的應(yīng)用是一個(gè)很有意義的課題,本文將在對數(shù)字簽名進(jìn)行研究的基礎(chǔ)上,將數(shù)字簽名的技術(shù)與數(shù)字版權(quán)管理系統(tǒng)進(jìn)行有機(jī)結(jié)合,使數(shù)字簽名理論能為數(shù)字版權(quán)的保護(hù)作出貢獻(xiàn)。

      2000年6月30日,美國克林頓總統(tǒng)用數(shù)字簽名和手寫簽名兩種方式正式簽署((數(shù)字簽名法律》,使數(shù)字簽名在美國與傳統(tǒng)簽名一樣具有了法律效力。

      2004年8月28日,第十屆全國人民代表大會常務(wù)委員會在第十一次會議通過了《中華人民共和國數(shù)字簽名法》,該法自2005年4月1日已經(jīng)開始施行。

      隨著各國相關(guān)法律的建立,數(shù)字簽名在今后將與手寫簽名或者蓋章具有同等的法律效力。以數(shù)字簽名方式簽署的合同、文件等電子文檔與傳統(tǒng)簽名方式簽署的紙質(zhì)文件具有同樣的法律效應(yīng),這就為基于互聯(lián)網(wǎng)的電子商務(wù)、電子政務(wù)等各種應(yīng)用鋪平了道路。

      我國將在國家計(jì)委的項(xiàng)目—網(wǎng)絡(luò)身份認(rèn)證管理示范工程基礎(chǔ)上,逐步開展以公安戶政信息和特征識別碼為支持平臺的網(wǎng)絡(luò)身份管理等工作,為數(shù)字簽名法的實(shí)施提供技術(shù)上的保障。數(shù)字簽名法立法通常遵循技術(shù)中立的原則。目前,國際上流行的態(tài)度是,數(shù)字簽名標(biāo)準(zhǔn)的發(fā)展應(yīng)該統(tǒng)一、透明和客觀,放棄為每一種認(rèn)證方法進(jìn)行立法的做法,承認(rèn)各種數(shù)字簽名的形式的合法性,只要其符合國際標(biāo)準(zhǔn),均具有同等的法律效力和可強(qiáng)制執(zhí)行力。反映到立法上,就是要確立技術(shù)的中立地位,避免規(guī)定使用特定技術(shù),只從功能上對數(shù)字簽名做出規(guī)定。這樣,才能為未來新的數(shù)字簽名技術(shù)的發(fā)展預(yù)留法律空間。

      數(shù)字簽名技術(shù)的發(fā)展是無止境的,一些原本被認(rèn)為安全的技術(shù),隨著時(shí)間的推移和技術(shù)的進(jìn)步也逐漸暴露出其缺陷。如,美國朗訊科技公司的貝爾實(shí)驗(yàn)室信息科學(xué)研究中心的DanielBleiehenbaehe研究員于2000年2月5日宣布在著名的數(shù)字簽名算法DSA的隨機(jī)數(shù)生成技術(shù)存在著重大缺陷。因?yàn)槊荑€的有效性依賴于數(shù)字產(chǎn)生的隨機(jī)度,但DSA的隨機(jī)數(shù)產(chǎn)生方法上存在偏重某些數(shù)字的現(xiàn)象。在概率上,從某個(gè)特定范圍的數(shù)字中選擇隨機(jī)數(shù)的概率是從其它范圍的數(shù)字中選擇的2倍。正是這種偏重性大大減弱了DSA的安全性能,從而會加大整個(gè)系統(tǒng)的脆弱性。不過以目前性能還不足夠發(fā)達(dá)的計(jì)算機(jī)而言,該缺陷還不至于立即構(gòu)成威脅。但在不久的將來,因特網(wǎng)和企業(yè)/政府的內(nèi)部網(wǎng)絡(luò)業(yè)務(wù)的完整性就會面臨危險(xiǎn)。VPN(虛擬個(gè)人網(wǎng)絡(luò))、在線購物和金融交易等都有可能受到影響。

      在國際密碼學(xué)會議(Crypt。2004)上,研究人員宣布,他們發(fā)現(xiàn)了破解數(shù)種Hash算法的方法,其中包括MD4,MDS,NAVAL一128,RIPEMD。這些都是常搭配數(shù)字簽名使用的算法。分析表明,SHAI的減弱條件的變種算法可能被破解,但完整的SHAI并沒有被破解,也沒有找到SHAI的碰撞。研究結(jié)果說明,SHAI的安全性暫時(shí)沒有問題,但隨著技術(shù)的進(jìn)步,也面臨著危險(xiǎn)。隨著數(shù)字簽名與普通簽名有同等效力的法規(guī)出臺,數(shù)字簽名技術(shù)的研究與應(yīng)用將進(jìn)入一個(gè)新的階段。隨著電子政務(wù)、電子商務(wù)等應(yīng)用的普及和認(rèn)識的提高,人們對數(shù)字簽名本身的安全要求也在不斷提高。對己有簽名方案的安全分析和攻擊將不斷升級,密碼學(xué)中各種算法的安全性將面臨嚴(yán)峻的考驗(yàn)。另一方面,需要依靠數(shù)字簽名技術(shù)的網(wǎng)絡(luò)應(yīng)用呈快速增長的趨勢。例如:2004年的美國總統(tǒng)大選已開始部分采用網(wǎng)上投票,據(jù)稱,世界上搞網(wǎng)上投票和電子投票的不止美國一家,瑞士、英國也己開始嘗試這種新的投票方法。隨著信息化的發(fā)展,我國信息安全技術(shù)的研究和產(chǎn)業(yè)已受到黨和國家的高度重視,江澤民總書記曾明確指出:“信息和網(wǎng)絡(luò)安全關(guān)系國家安全”。信息安全的地位越來越高,越來越引起政府的重視,投入上也越來越大。

      在軍事上,信息戰(zhàn)這種新型作戰(zhàn)模式的出現(xiàn)被視為是一次軍事革命,今后的戰(zhàn)爭中決定勝負(fù)的因素不再僅僅是炸藥、飛機(jī)和大炮,信息將成為一種重要的克敵制勝的武器。目前這種新型戰(zhàn)爭的各項(xiàng)準(zhǔn)備工作各國都在高速進(jìn)行,而這主要取決于計(jì)算機(jī)硬件、軟件、網(wǎng)絡(luò)通信技術(shù)的發(fā)展水平。數(shù)字簽名技術(shù)由于其能有效地防止信息的偽造、確定信息的來源和判斷信息是否完整等能力,使其在信息戰(zhàn)中有著極其重要的作用。

      數(shù)字簽名的特性使得數(shù)字簽名在運(yùn)用到數(shù)字版權(quán)管理系統(tǒng)的協(xié)議中能起到重要的作用。現(xiàn)今對數(shù)字產(chǎn)品的版權(quán)保護(hù)的主要技術(shù)是數(shù)字水印技術(shù),數(shù)字水印算法己經(jīng)有了較大發(fā)展,能夠應(yīng)用于所有網(wǎng)絡(luò)上的數(shù)字媒體,抗攻擊性和可用性也正在提高。目前,有些系統(tǒng)己經(jīng)開始嘗試將數(shù)字水印算法用于數(shù)字媒體的版權(quán)保護(hù)過程中。但是我們應(yīng)該看到,在開放環(huán)境下,密碼算法的安全性和安全協(xié)議的安全性是保障

      信息安全的兩個(gè)基本方面。在開放環(huán)境下若要保護(hù)數(shù)字版權(quán),使用數(shù)字水印算法來保證版權(quán)的安全性固然很重要,但也必須考慮到版權(quán)保護(hù)過程中所采用協(xié)議的安全性。當(dāng)攻擊者轉(zhuǎn)向攻擊協(xié)議而不是數(shù)字水印算法本身時(shí),如果協(xié)議本身存在安全漏洞,則整個(gè)系統(tǒng)就起不到真正保護(hù)數(shù)字版權(quán)的作用。1883年,AugusteKerckhoffS〔3}闡述了第一個(gè)密碼系統(tǒng)的設(shè)計(jì)準(zhǔn)則,他在該準(zhǔn)則中建議:我們應(yīng)該假設(shè)對手知道加密數(shù)據(jù)的方法,數(shù)據(jù)的安全性必須僅依賴密鑰的選擇。像商用的密碼算法和協(xié)議那樣,為了使數(shù)字版權(quán)管理系統(tǒng)在開放環(huán)境下能起到版權(quán)保護(hù)作用,系統(tǒng)的設(shè)計(jì)必須遵守KerCkhoffS準(zhǔn)則。顯然,通過引入完備的安全協(xié)議,可以最大限度的防范攻擊者對整個(gè)系統(tǒng)的破壞。隨著數(shù)字化信息應(yīng)用的普及,數(shù)字版權(quán)保護(hù)安全協(xié)議的研究必將會成為一個(gè)新的研究熱點(diǎn)。

      二:數(shù)字簽名的原理

      2.1 數(shù)字簽名具備的特征 數(shù)字簽名類似于數(shù)字化的手寫簽名, 但它們又不完全相同.數(shù)字簽名與單獨(dú)的數(shù)據(jù), 如簽名的合同或電子郵件有關(guān).數(shù)字化的手寫簽名也是為了完成相同的工作, 但是它卻無法引用待簽的文檔.強(qiáng)迫進(jìn)行數(shù)字化的手寫簽名比強(qiáng)迫進(jìn)行數(shù)字簽名容易的多: 只需從另一個(gè)文檔拷貝簽名即可.數(shù)字簽名通常提供更高 的安全度, 因?yàn)樗鼈兣c簽名的文檔相關(guān), 而且如果無法讀取所使用的密鑰, 就很難偽造簽名.由此, 數(shù)字簽名要具備以下特征:(1)簽名不能被偽造;(2)簽發(fā)方簽過名后不能對簽發(fā)文件的事實(shí)進(jìn)行抵賴和否認(rèn);(3)信息發(fā)出后, 任何人不能對其進(jìn)行篡改;(4)若雙方關(guān)于簽名發(fā)生糾紛, 可以給第三方仲裁機(jī)構(gòu)提供用于仲裁的證據(jù)。

      2.2 數(shù)字簽名的原理

      數(shù)字簽名的基礎(chǔ)是密碼技術(shù), 目前較多使用公鑰加密技術(shù), 如基于RSA Date Secu rity 公司的PKCS(Pub lic Key Cryp tography Standards)、DSA(D igi2tal Signatu re A lgo rithm)、PGP(P ret ty Good P rivacy)等.在1994 年美國標(biāo)準(zhǔn)與技術(shù)協(xié)會公布了數(shù)字簽名標(biāo)準(zhǔn)(DSS)后, 公鑰加密技術(shù)在數(shù)字簽名中的應(yīng)用更為廣泛.公鑰加密系統(tǒng)使用密鑰對公鑰和私鑰來加密和解密信息.用戶可以公布其公鑰, 公鑰的公布不會損害系統(tǒng)的保密性.而私鑰只有密鑰對的所有者才知道, 從而可把私鑰作為其所有者的身份特征.發(fā)送者A 用其私鑰S KA 對文件X 進(jìn)行加密, 結(jié)果D S KA(X)傳送給接收者B.B 用已知的A 的公鑰P KA 解密得出E PKA(D S KA(X))= X.由于除A 外無人具有A 的私鑰S KA , 所以除A 外沒有別人能產(chǎn)生密文D S KA(X), 也就唯一標(biāo)識了A 的身份.若A 要抵賴曾發(fā)送文件給B,B 可將X 及D S KA(X)出示給第三者.第三者很容易用P KA 去證實(shí)A 確實(shí)發(fā)送文件X給B.反之, 若B 將X 偽造為X ′, 則B 不能在第三者前出示D S KA(X ′), 就證明B 偽造了報(bào)文.這樣就實(shí)現(xiàn)了數(shù)字簽名.為了保證傳輸?shù)臄?shù)據(jù)不被篡改, 在現(xiàn)有的數(shù)字簽名方案中, 通常以單向函數(shù)(如Hash 函數(shù)等)作用于文件, 產(chǎn)生固定長度的二進(jìn)制作為信息摘要, 再將信息摘要用公鑰加密作為簽名與文件一起發(fā)送.由于采用單向函數(shù), 給定一個(gè)固定長度的字符串, 很難找到一個(gè)具有明確意義的消息, 使其函數(shù)值與該字符串的信息摘要值完全相同.所以消息一旦被修改或破壞,就會與原來的信息摘要值不匹配.接收方很容易通過計(jì)算文件的信息摘要值與傳來的函數(shù)值的不同, 而察覺出消息被非法用戶篡改過.目前, J ava 開發(fā)包JDK 中支持DSA 簽名,JDK1.3 及以后的版本還支持RSA 簽名.而且, J ava還提供了2 個(gè)信息摘要函數(shù)MD5 和SHA.以DSA簽名算法和基于MD5 的信息摘要為例, 數(shù)字簽名及驗(yàn)證的過程簽名是首先計(jì)算被簽名文件的MD5 碼, 該碼經(jīng)過DSA 私鑰和DSA 加密算法加密后, 形成數(shù)字簽名, 然后再附加到原文件之后, 向外發(fā)送.收件人得到帶有數(shù)字簽名的文件后, 要對數(shù)字簽名進(jìn)行鑒別.首先取出簽名者的公鑰, 數(shù)值簽名經(jīng)過公鑰和DSA 解密算法解密后, 恢復(fù)出原來的MD5 碼.然后計(jì)算原文件的MD5 碼, 再與前者比較, 如果相同, 則文件屬實(shí), 否則文件或簽名已經(jīng)過改動.2.3 數(shù)字證書

      由于數(shù)字簽名依賴于公鑰的完整性, 那么驗(yàn)證人如何確保他們獲得的公鑰不是來自某個(gè)冒名頂替者呢? 而且, 在數(shù)字簽名認(rèn)證發(fā)送人的同時(shí), 接收人如何能夠確保發(fā)送人值得信任呢? 這些問題的解決方案就是數(shù)字證書.由共同信任的第三方或證書授權(quán)機(jī)構(gòu)CA(Certificate Authority)頒發(fā)證書.CA 不僅有簽名者的公鑰, 還有該用戶的其他信息.證書含有一個(gè)有效期.頒發(fā)機(jī)構(gòu)用它的專用密鑰在證書上簽名.該過程隱含一個(gè)假定, 即CA 的公鑰是廣泛可用的和真實(shí)的.公鑰證書以X.509 標(biāo)準(zhǔn)為基礎(chǔ).默認(rèn)情況下, Java 開發(fā)包使用的是X.509 證書.一個(gè)證書包括: 一個(gè)公鑰;一個(gè)唯一的名字實(shí)體(個(gè)人或公司), 它是證書的所有者, 包括用戶名字、公司、組織、城市、地址、國家代碼、省份等信息;數(shù)字簽名: 一個(gè)證書被一個(gè)分發(fā)者的實(shí)體簽名, 保證證書確實(shí)包含另一個(gè)實(shí)體(所有者)的公鑰;分發(fā)者的標(biāo)識名信息.一般是每一個(gè)公鑰做一張數(shù)字證書,私鑰用最安全的方式交給用戶或自己生產(chǎn)密鑰對,數(shù)字證書的內(nèi)容包括用戶的公鑰、姓名、發(fā)證機(jī)構(gòu)的數(shù)字簽名及用戶的其他信息,對方可以借此來驗(yàn)證身份的真假。當(dāng)然,證書必須預(yù)防密鑰丟失,可采用恢復(fù)密鑰和密鑰托管等方式處理丟失問題。證書的有效期超過后,必須重新簽發(fā),如果私鑰丟失或被非法使用,則應(yīng)廢止證書。

      數(shù)字簽名流程如圖所示:

      三:數(shù)字簽名的實(shí)現(xiàn)方式

      由于數(shù)字簽名的實(shí)現(xiàn)方式多種多樣,可以在不同的應(yīng)用平臺上采用數(shù)字簽名,所以下面列舉兩種比較常見的實(shí)現(xiàn)方式進(jìn)行討論。

      3.1 :ASP.NET 中數(shù)字簽名的實(shí)現(xiàn) 密碼系統(tǒng)是WEB 應(yīng)用程序的安全通訊的基礎(chǔ),主要目的是保護(hù)數(shù)據(jù),保護(hù)用戶的標(biāo)識或數(shù)據(jù)不被泄漏,保護(hù)數(shù)據(jù)不遭受未授權(quán)篡改或者損壞。保證接收的數(shù)據(jù)來自某特定的用戶。加密是密碼系統(tǒng)在實(shí)踐中的應(yīng)用,它是用算法使數(shù)據(jù)變得不規(guī)則的過程。密碼系統(tǒng)有對稱和不對稱兩種加密方法。在使用.NET 技術(shù)創(chuàng)建WEB 應(yīng)用程序的過程中,可以通過編程方式使用密碼系統(tǒng)來加強(qiáng)WEB 應(yīng)用程序的安全性。根據(jù)所使用的編程平臺,可以使用幾種加密庫中的一種,給WEB 應(yīng)用程序添加加密、散列和數(shù)字簽名功能。

      簽名數(shù)據(jù)處理:

      .NET Framework 為簽名數(shù)據(jù)和文件提供了RSACryptoServiceProvider 和DSACryptoServiceProvider 類。使用RSACryptoServiceProvider 和DSACryptoServiceProvider 類,有兩個(gè)可用于簽名數(shù)據(jù)的選項(xiàng),如表:

      簽名數(shù)據(jù)的第一步是創(chuàng)建 RSACryptoServiceProvider 類的新實(shí)例以生成公鑰/ 私鑰對??梢栽趹?yīng)用程序中創(chuàng)建一個(gè) RSACryptoServiceProvider 類的新實(shí)例,它從計(jì)算機(jī)密鑰證書存儲區(qū)中讀取公鑰/私鑰對,并把密鑰對保存到一個(gè)名為SignKeyContainer 的新的密鑰容器中:

      C s p P a r a m e t e r s p a r a m = n e wCspParameters();

      P a r a m.K e y C o n t a i n e r N a m e = ”SignKeyContainer”

      Param.Flags=CspProviderFlags.UseMachineKeyStore;R S A C r y p t o S e r v i c e P r o v i d e robjRSA=new RSACryptoServiceProvider(param);

      注意,當(dāng)使用RSA CryptoServiceProvider 對象時(shí),必須指定計(jì)算機(jī)的密鑰證書存儲區(qū),它是只有ASPNET 用戶才有訪問權(quán)的證書存儲區(qū)。如果要使用個(gè)人密鑰存儲區(qū),必須使用模擬方式。

      SignData 方法需要字節(jié)數(shù)據(jù)作為參數(shù),所以第二步必須把要進(jìn)行簽名的數(shù)據(jù)轉(zhuǎn)換為字節(jié)數(shù)組。使用System.Text 命名空間中的UnicodeEncoding 類把字符串轉(zhuǎn)換為字節(jié)數(shù)組:

      U n i c o d e E n c o d i n g U E = n e wUnicodeEncoding();

      byte[] arTextTOSign=UE.GetBytes(txtClear.Text);

      最后,調(diào)用SignData 方法對數(shù)據(jù)進(jìn)行散列和簽名。DSACryptoServiceProvider類使用S H A 1 哈希算法。如果使用RSACryptoServiceProvider 類,可以在SignData方法的第二個(gè)參數(shù)中指定哈希算法,如下面的代碼所示,其中使用M D 5 哈希算法:

      byte[] arDigitalSignature;arDigitalSignature=objRSA.SignData(arTextTOSign,”MD5”);

      解密數(shù)據(jù)處理:

      解密已經(jīng)過數(shù)字簽名的數(shù)據(jù)時(shí),要完成下列步驟:

      1)接收方使用發(fā)送方的公鑰解密簽名,得到原來的哈希值。

      如果簽名可以解密,則接收方可以確信數(shù)據(jù)來自發(fā)送方(或私鑰的所有者)。

      2)對數(shù)據(jù)應(yīng)用哈希算法來生成第二個(gè)哈希值。

      3)比較兩個(gè)哈希值。如果哈希值匹配,則接收方可以確信數(shù)據(jù)沒有被修改過。

      要驗(yàn)證數(shù)字簽名,必須擁有: 簽名數(shù)據(jù)的用戶所持有的公鑰 數(shù)字簽名 已簽名的數(shù)據(jù)

      簽名者使用的哈希算法

      例如由前面簽名數(shù)字第一步中SignKeyContainer 密鑰容器創(chuàng)建的一個(gè)RSACryptoServiceProvider 類的新實(shí)例,為了驗(yàn)證簽名,需要調(diào)用V e r i f y D a t a 或VerifyHash 方法,這依賴于簽名是如何創(chuàng)建的。VerifyData和VerifyHash方法都返回布爾值,True 表明簽名有效;False 表明簽名無效。下面的例子示例使用VerifyData 方法驗(yàn)證數(shù)字簽名。在此例中,arTextTOSign和arDigitalSignature都是由遠(yuǎn)程用戶提供的字節(jié)數(shù)組:

      if(objRSA.VerifyData(arTextTOSign,”MD5”, arDigitalSignature))

      lblVerify.Text=”Validsignature”;

      else

      lblVerify.Text=”InValidsignature”

      3.2 Java實(shí)現(xiàn)方式:

      Java 開發(fā)包中包含了一系列工具用來提供加密、信息融合、密鑰管理、認(rèn)證、存取控制和數(shù)字簽名等功能, 可以很方便地實(shí)現(xiàn)對Java 應(yīng)用程序和JavaApp let小程序的數(shù)字簽名和客戶端認(rèn)證.Java Applet 小程序簡單、短小, 非常適合網(wǎng)絡(luò)傳輸?shù)囊? 而且不受平臺限制.以簽名Applet 小程序?yàn)槔f明數(shù)字簽名的具體實(shí)現(xiàn)過程.實(shí)現(xiàn)簽名的工具:

      密鑰和證書管理工具(Keytoo ls): 它主要是負(fù)責(zé)公私密鑰對、向CA 發(fā)證書申請、接受CA 的回復(fù)、記錄信任的公鑰—— 實(shí)體對應(yīng)表, 維護(hù)密鑰庫(Keysto re).Java 文檔處理工具(jar): 如果要對代碼簽名, 需要先用jar 將其打包, 然后用jarsigner 來簽名.J ava 文檔簽名及驗(yàn)證工具(jarsigner): 該工具通過密鑰庫中的數(shù)據(jù)來對jar 文件進(jìn)行簽名和認(rèn)證.策略編輯器(po licytoo l): 編輯系統(tǒng)安全策略的文件.實(shí)現(xiàn)簽名的步驟:

      在客戶端安裝JRE1.3.0 01(Java 運(yùn)行環(huán)境.3.0.1版本)以取代IE 的JVM(Java 虛擬機(jī)).在服務(wù)器端的調(diào)用App let 的HTML 文件中也需要將它包含進(jìn)來, 以便沒有事先安裝JRE 的客戶端下載.具體實(shí)現(xiàn)步驟如下:

      服務(wù)器端(代碼分發(fā)端):

      (1)開發(fā)J ava 源程序并編譯, 生成myf ile.class文件.(2)用JAR 對類文件和資源文件進(jìn)行封裝:jar cvf myf ile.jar myf ile.class(3)用Keytoo l 產(chǎn)生公鑰?密鑰對(DSA 是Keytoo l 程序缺省的算法), 生成X.509V 1 證書, 鍵入命令:keytoo l genkey keysto re myf ile.keysto re alias myf ile(4)使用(3)生成的密鑰對jar 文件進(jìn)行簽名:jarsigner keysto re myf ile.keysto re myf ile.jarmyf ile(5)輸出公鑰證書.數(shù)據(jù)的接收方是通過與生成數(shù)字簽名的私鑰對應(yīng)的公鑰來鑒定簽名文件的, 因此要給數(shù)據(jù)的接收方發(fā)送一份公鑰證書的副本.鍵入命令:keytoo l expo rt keysto re myf ile.keysto re alias myf ile file myfile.cer此命令將生成名為myfile.cer 證書文件, 這個(gè)cer 文件就是要拷貝到客戶端的唯一文件.這樣就完成了服務(wù)器端的設(shè)置.這時(shí)就可以將jar 文件和keysto re 文件以及cer 文件(在這里使用的是myf ile.jar, myf ile.keysto re, myf ile.cer)拷貝到服務(wù)器的目錄下了.客戶端(代碼接收端):

      (1)安裝好JRE1.3.0 01 后, 將服務(wù)器端生成的myf ile.cer 文件拷貝到j(luò)re 的特定目錄下.(2)輸入證書并視其為可信任, 將公鑰倒入到j(luò)re 的cacert s(這是jre 的默認(rèn)keysto re):keytoo l impo rt alias myf ile f ile myf ile.cer keysto re cacert s注意這里要輸入的cacert s 的密碼是changeit,而不是自己設(shè)定的keysto re 的密碼.(3)修改安全策略配置文件.運(yùn)行命令po licytoo l.系統(tǒng)會自動彈出一個(gè)po li cytoo l 的對話框, 選擇file 菜單的open 項(xiàng), 打開客戶端目錄下的java.po liy 文件, 然后在edit 菜單中選擇Change keysto re, 在對話框的new keysto re u rl 欄中輸入密鑰庫cacert s 在客戶機(jī)中的路徑, 在new keysto re type 中輸入JKS, 這是cacert s 的固定格式, 然后單擊Add Policy Entry, 在出現(xiàn)的對話框中Code Base 中輸入App let 程序在服務(wù)器端的位置:http: URL: 8080其中的URL 是服務(wù)器的IP 地址, 8080 是服務(wù)器(這里用的是Tomcat)端口.在SignedBy 中輸入別名(alias): 這里是myf ile.然后單擊add perm ission 按鈕, 在出現(xiàn)的perm ission 對話框中選擇你想給這個(gè)Applet 的權(quán)限, 最后保存.(4)從服務(wù)器端取得字節(jié)碼, 驗(yàn)證字節(jié)碼的合法性與完整性, 根據(jù)策略文件分配相應(yīng)的權(quán)限, 執(zhí)行代碼, 完成后被垃圾回收器回收內(nèi)存.四:數(shù)字簽名的應(yīng)用

      數(shù)字簽名是互聯(lián)網(wǎng)上不可缺少的安全處理技術(shù), 目前已有很多人在研究新算法, 以適應(yīng)于特定領(lǐng)域內(nèi)數(shù)字簽名的需求, 其中包括以下幾個(gè)研究方面。

      1、高效可驗(yàn)證的安全數(shù)字簽名方案。這種數(shù)字簽名方案能夠防止通過猜測RSA 算法的某些變量來選擇信息進(jìn)行攻擊, 它的安全性不是基于樹型結(jié)構(gòu)的信任關(guān)系, 而是利用一種被稱為“散列和標(biāo)記”的范式。這種簽名的惟一性是建立在它的假設(shè)上, 即假設(shè)加密所用的散列函數(shù)是經(jīng)過詳細(xì)定義的, 并且是合理的(可以不符合標(biāo)準(zhǔn))。我們可以分3 步證明它的安全性: 首先隨機(jī)構(gòu)造一個(gè)預(yù)測模型, 且能夠描述并證明這個(gè)模型是可靠的, 然后證明所構(gòu)造的模型可以用一個(gè)滿足特定計(jì)算特性(這些特性經(jīng)過詳細(xì)定義)的散列函數(shù)來代替;最后通過證明滿足這些特定計(jì)算性質(zhì)的散列函數(shù)是存在的, 從而論證假設(shè)的合理性。

      2、防止適應(yīng)性攻擊的門限簽名方案。在門限簽名方案中, 數(shù)字簽名是由一組用戶產(chǎn)生, 而不是由個(gè)人或一個(gè)組織產(chǎn)生, 簽名所用的私鑰由一個(gè)組內(nèi)的多個(gè)用戶共享。為了給消息M 產(chǎn)生一個(gè)有效的簽名, 至少需要t+1 個(gè)人合作, 由門限簽名方案產(chǎn)生的簽名和只有個(gè)人擁有私有密鑰產(chǎn)生的簽名具有相似性, 也就是說是否用分布方式產(chǎn)生數(shù)字簽名這一點(diǎn)對接收端來說是透明的。門限簽名方案的作用主要是防止來自內(nèi)部或外部對簽名密鑰的攻擊, 涉及門限簽名的目標(biāo)有兩個(gè)方面: 一是提高數(shù)字簽名代理的有效性;二是防止密鑰被偽造, 使攻擊者更難獲得簽名所用的私鑰。因?yàn)榻M內(nèi)必須有多個(gè)人才能產(chǎn)生數(shù)字簽名, 這一點(diǎn)使門限簽名方案具有強(qiáng)壯性, 即使攻擊者就是組內(nèi)的個(gè)別成員, 也能保證信息不被泄漏, 這項(xiàng)工作的實(shí)施草案可利用RSA 和DSS 數(shù)字簽名方案進(jìn)行設(shè)計(jì)實(shí)現(xiàn)。

      3、面向流信息的數(shù)字簽名。對信息流進(jìn)行數(shù)字簽名與對規(guī)則信息進(jìn)行簽名不同, 傳統(tǒng)的簽名方案是面向消息的, 接受端在收到全部信息之后才能對簽名進(jìn)行驗(yàn)證。然而流信息是很長的(可能是無限長)的位序列, 接收者必須一邊接收消息, 一邊獲取消息內(nèi)容, 不能有延遲。如果讓接收者收到全部信息之后再進(jìn)行驗(yàn)證是不現(xiàn)實(shí)的, 這種流信息包括數(shù)字視頻、數(shù)字音頻、數(shù)據(jù)流及java applet 程序等。對于這類簽名包括兩種情況: 一種是發(fā)送端已知信息是有限長的(如電影), 另一種是發(fā)送端不知道信息的長度(可能無限長, 如廣播)。這種對流信息的簽名技術(shù)還能應(yīng)用于其它領(lǐng)域, 如在通訊代價(jià)高時(shí)對長文件的高效驗(yàn)證, 這時(shí)可以將基于數(shù)字簽名的過濾器裝載代理服務(wù)器上。

      4、不可否認(rèn)數(shù)字簽名。數(shù)字簽名是用來保密組織之間傳遞的秘密協(xié)議, 保證傳遞的個(gè)人信息的私有性, 因此即使在收發(fā)雙方產(chǎn)生了糾紛, 仍然不希望參與驗(yàn)證簽名合法的第3 方能看到信息原文, 這就需要限制驗(yàn)證合法性的第3方的權(quán)利。當(dāng)然限制過多會使第3 方失去判斷和解決糾紛的能力, 數(shù)字簽名也就失去了它的價(jià)值。能夠解決上述問題的一種簽名方案是不可否認(rèn)數(shù)字簽名(undeniable signature),接收端對簽名的驗(yàn)證過程必須在合法的發(fā)送者的參與下使用確認(rèn)協(xié)議(confirmation protocol)來完成, 同時(shí)發(fā)送者也可以使用否認(rèn)協(xié)議(denialprotocol)來證明簽名是偽造的。當(dāng)收發(fā)雙方A,B 發(fā)生糾紛時(shí), 則要求A,B 在公開場合下執(zhí)行否認(rèn)協(xié)議, 如果發(fā)送方A 拒絕參與配合, 則不打自招, 說明此數(shù)字簽名為真;否則, A 只有通過該協(xié)議的所有步驟才能成功地否認(rèn)數(shù)字簽名。

      五:數(shù)字簽名的面臨的問題

      數(shù)字簽名技術(shù)正處于發(fā)展階段, 還有很多技術(shù)沒有解決。下面具 體來討論一下。

      1、標(biāo)準(zhǔn)化問題: 在數(shù)字簽名中, 只有標(biāo)準(zhǔn)的才是通用的, 只有通用的才有生命力。而目前標(biāo)準(zhǔn)的制定者除了IETF、ITU 和RSA Security主要的三家外, 還有許多組織(如公司、研究所、政府機(jī)構(gòu))也參與到新的IETF RFC 的開發(fā)中, 這使得制定統(tǒng)一的標(biāo)準(zhǔn)更加困難。

      2、信任問題: 認(rèn)證權(quán)威機(jī)構(gòu)CA 的主要功能是發(fā)行、管理和撤消證書。證書的持有者和使用者都必須信任發(fā)行這些證書的CA。然而,什么CA 才是可信任的呢? 這是一個(gè)很重要的問題。目前的認(rèn)證信任模型都是基于認(rèn)證鏈的, 認(rèn)證鏈的根即根認(rèn)證權(quán)威機(jī)構(gòu)(rootCA)憑什么可以信任? 此外, 由于PKI 往往是多個(gè)并行的, 它們之間進(jìn)行互連,無論是分層PKI 的根CA 或網(wǎng)格中的任何CA 都必須使用橋CA(bridge CA)進(jìn)行交叉認(rèn)證, 那么又憑什么相信橋CA 呢?

      3、標(biāo)識和認(rèn)證問題: 用戶認(rèn)證在數(shù)字簽名中主要通過密鑰認(rèn)證來進(jìn)行, 認(rèn)證方式有二。一是采用不明確的方式, 如使用口令對加密過的密鑰進(jìn)行解密操作;二是采用明確的方式, 如在智能卡中使用PIN。無論采用何種方式, 進(jìn)行簽名之前, 都要明確其對應(yīng)的應(yīng)用, 這就要求在進(jìn)行多個(gè)簽名時(shí)需要多次認(rèn)證才能獲得多個(gè)認(rèn)可, 這是安全需要的, 卻是很不方便的。若采用智能卡進(jìn)行認(rèn)證, 當(dāng)用戶沒有攜帶智能卡時(shí)還是需要額外的口令方式的數(shù)字簽名。而且, 即使攜帶智能卡, 也還需要相應(yīng)的讀卡設(shè)備, 這對于出差在外還是不方便。

      4、文檔展示問題: 當(dāng)用戶授權(quán)實(shí)施簽名時(shí), 該用戶依賴于系統(tǒng)組件來確保被簽名對象與用戶要簽的對象是對應(yīng)的, 而不是該對象的一個(gè)變體或另外一個(gè)完全不同的對象, 或者叫“所見即所簽”往往用戶看到的內(nèi)容與實(shí)際內(nèi)容是有出入的。

      5、注冊認(rèn)證問題: 為確保用戶身份真實(shí)性, 要求欲注冊證書者攜帶有效身份到當(dāng)?shù)氐腃A 或RA 辦理手續(xù), 這對不在CA 或RA 所在地的用戶是不太方便的。為解決此問題, 可以申請網(wǎng)上注冊, 然而網(wǎng)上注冊有兩大問題: 一是如何確保用戶的身份不做假, 二是如何確保用戶的申請數(shù)據(jù)沒有被篡改或出現(xiàn)傳輸錯(cuò)誤。即, 如何確保用戶的身份正確或CA 所收到的公鑰的確是代表用戶認(rèn)證的。這依賴于一個(gè)安全的注冊過程, 而這個(gè)過程應(yīng)該如何建立,.NET 技術(shù)的出現(xiàn)是否能給解決這問題帶來曙光?

      6、群簽名: 群簽名方案允許組中合法用戶以用戶組的名義進(jìn)行簽名, 具有簽名者匿名、只有權(quán)威才能辨認(rèn)簽名者等多種特點(diǎn), 有著廣泛應(yīng)用。目前最常用的群簽名方案有K-P-W 可變?nèi)汉灻桨?、LC 群簽名方案和T-J 群簽名方案。但是, 這些方案都存在弱點(diǎn), 如K-P-W群簽名方案, 攻擊者可以對參數(shù)n 進(jìn)行素因子分解、GC 可以將組成員的有效簽名轉(zhuǎn)換為組中其他組成員的有效簽名, 此外, 還存在GC 在簽名過程中和身份驗(yàn)證過程中的偽造。此外, 還有隱形簽名、確認(rèn)者簽名、團(tuán)體簽名等, 有應(yīng)用需求, 但技術(shù)實(shí)現(xiàn)還處在“初級階段”。

      7、生物統(tǒng)計(jì)學(xué)。這可能是實(shí)現(xiàn)用戶認(rèn)證的最強(qiáng)大的方法, 主要包括: 指紋掃描、視網(wǎng)膜掃描和虹膜掃描、語音識別、面部識別等。生物統(tǒng)計(jì)因子不會被丟失或竊取, 或者被遺忘, 然而, 它容易出現(xiàn)個(gè)人身體屬性的誤拒絕、個(gè)人身體屬性的誤接受和無法登記個(gè)人的身體屬性。目前要使用生物統(tǒng)計(jì)學(xué)認(rèn)證, 一是技術(shù)還不夠成熟, 二是太昂貴, 這也將影響數(shù)字簽名的推廣。

      六:總結(jié)

      數(shù)字簽名技術(shù)應(yīng)用領(lǐng)域日益廣泛,是當(dāng)前信息安全技術(shù)研究的熱點(diǎn)。本文首先從數(shù)字簽名的概念、分類、原理,以及其應(yīng)用過程中可能遇到的問題等方面做了詳細(xì)論述。然后介紹了目前這項(xiàng)技術(shù)研究的熱點(diǎn)和新的發(fā)展方向。由于許多領(lǐng)域?qū)?shù)字簽名技術(shù)提出了新的應(yīng)用需求,在未來的信息領(lǐng)域中這一技術(shù)仍有著廣闊的發(fā)展前景。

      參考文獻(xiàn)

      [1]趙翔.數(shù)字簽名綜述[J].計(jì)算機(jī)工程與設(shè)計(jì).2006.[2] StallingsW.密碼編碼與網(wǎng)絡(luò)安全: 原理與實(shí)踐[M ].北京: 電子工業(yè)出版社, 2001.239~ 241 [3] 洪 琳, 李 展.數(shù)字簽名、數(shù)字信封和數(shù)字證書[ J ].計(jì)算機(jī)應(yīng)用, 2000, 20(2): 21~ 22 [4] Garm s J , Somerfield D.J ava 安全性編程指南[M ].北京: 電子工業(yè)出版社, 2002.136~ 169 [5] 劉智勇.智能交通控制理論及其應(yīng)用[M].北京.科學(xué)出版社.2003 [6]邵質(zhì)斌,尹四清,淺談數(shù)字簽名技術(shù)[D].山西:中北大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)系,2006.[7]魚雙鍵,詳解數(shù)字簽名魚雙鍵[J].科技情報(bào)開發(fā)與經(jīng)濟(jì).2006.16(2):215-216.[8]趙翔,數(shù)字簽名綜述[J].計(jì)算機(jī)工程與設(shè)計(jì).2006.27(2):195-197.[9]李明浩,吳智文.數(shù)字簽名面臨[D].福建: 廈門大學(xué)計(jì)算機(jī)科學(xué)系, 廣東: 廣東機(jī)電職業(yè)技術(shù)學(xué)院機(jī)電工程系.2005.[10] 范紅.數(shù)字簽名技術(shù)及其在網(wǎng)絡(luò)信息安全中的應(yīng)用[J].中國科學(xué)院研究生院學(xué)報(bào), 2001,18(2):4.[11]劉淵.網(wǎng)上在線支付數(shù)字簽名的研究與設(shè)計(jì)[J ].計(jì)算機(jī)應(yīng)用研究,2003(11):110-112.

      第二篇:PDF數(shù)字簽名

      制做PDF文件電子簽名的方法

      1、在一張白紙上寫一個(gè)您最得意的簽名,并掃描或用數(shù)碼像機(jī)將簽名轉(zhuǎn)為圖片文件;

      2、用photoshop打開上面做好的簽名圖片文件,裁切成剛好能容納您簽名的大小,并 去掉圖片的背景顏色(方法詳見后附),將處理好的圖片另存為.GIF 圖片格式文件待用;

      3、打開Adobe Acrobat 9 Pro(本制做方法適用于Adobe Acrobat 9 Pro 版本,其它 版本請做相應(yīng)調(diào)整),任意新建一個(gè)PDF文件;

      4、點(diǎn)擊Adobe Acrobat 9 Pro 工具欄中的“簽名”—“放置簽名”,并用鼠標(biāo)在新建的 那個(gè)PDF文件中畫一個(gè)長方形的簽名區(qū)(名字相簽多大就畫多大);

      5、在隨后彈出的窗口中選擇“我要立即創(chuàng)建新的數(shù)字簽名”,并點(diǎn)“下一步”;

      6、在下一個(gè)窗口選擇“新建PKCS#12數(shù)字身份證文件”,并點(diǎn)“下一步”;

      7、在彈出的新窗口中輸入“姓名”、“部門”,“單位名稱”,“電子郵件地址”(以上這些 都只能輸英文或拼音,不支持漢字);然后選擇國家并點(diǎn)“下一步”;

      8、在接下來彈出的窗口中選擇電子簽名文件制做好后要存放的文件夾,輸入并確認(rèn)您 以后簽名時(shí)驗(yàn)證身份要用的密碼;最后點(diǎn)擊“完成”

      9、在“簽名文檔”窗口中的“簽名為:”檔中選擇“新建ID”,在“外觀(A):”欄選擇 “創(chuàng)建新外觀?”;

      10、彈出的“配置簽名外觀”窗口中的標(biāo)題欄輸入這類簽名的標(biāo)識,例:“無日期簽名” 等等;在“配置圖形”--“顯示:”中選擇“導(dǎo)入的圖形(I)”并點(diǎn)擊“文件(F)?”;從“選擇圖片”窗口的“瀏覽(B)?”中找到第2步制做好的圖片文件并點(diǎn)“確定”返回;這時(shí)您就可以“配置簽名外觀”窗口的“預(yù)覽”欄中看見您手寫的簽名了;您也會看到,除了您的簽名外,它后面還跟著一些其它信息;這些信息是通過“配置文本”-“顯示:”后面的選擇項(xiàng)來控制的,您可以根據(jù)您的簽名需要選擇;

      11、至此,點(diǎn)“確定”后,您的電子簽名就算制做完成了,以后在簽名時(shí),只需重復(fù)第 4步并輸入密碼就OK了!

      12、如果需要在簽名時(shí)同時(shí)輸入簽名“原因”,就需要在“配置簽名外觀”窗口的“配 置文本”選項(xiàng)中勾選上“原因”,點(diǎn)擊“確定”完成電子簽名制做后,再在“編輯”菜單欄選擇“首選項(xiàng)”—“種類”—“安全性”—“高級首選項(xiàng)”—“創(chuàng)建”標(biāo)簽中勾選“簽名時(shí)顯示原因”。這樣,以后簽名時(shí)就可以輸入您的簽名“意見”(原因)了;

      13、如果您對剛才制做的這個(gè)簽名不滿意,可以在Adobe Acrobat 9 Pro 工具欄中的“高 級”—“安全性設(shè)置”,中刪除這個(gè)數(shù)字身份證;如果你想對制做好的簽名做一個(gè)備份,以后電腦系統(tǒng)重裝后可以直接導(dǎo)入使用,您也可以在這個(gè)窗口中將您制做好的“數(shù)字身份證”導(dǎo)出保存。

      14、對于您不滿意的簽名外觀,可以在“編輯”菜單欄選擇“首選項(xiàng)”—“種類”—“安 全性”—“外觀”欄中進(jìn)行“編緝”或“刪除”;也可以在此處應(yīng)用“新建”按鈕直

      名人堂:眾名人帶你感受他們的驅(qū)動人生馬云任志強(qiáng)李嘉誠柳傳志史玉柱

      接創(chuàng)建一個(gè)新的簽名外觀。

      15、修改簽名密碼:運(yùn)行Adobe Acrobat 9 Pro,依次點(diǎn)擊菜單欄中的“高級”—“安 全性設(shè)置”—“數(shù)字身份證文件”,再點(diǎn)擊右側(cè)最上面一行中的“更改口令”就可更改您簽名時(shí)要輸入的密碼了!

      第三篇:白話數(shù)字簽名

      白話數(shù)字簽名

      由于數(shù)字簽名基于非對稱加密技術(shù),所以我們需要先啰嗦一下對稱加密和非對稱加密技術(shù)。

      對稱加密

      何謂加密?加密是一種“把數(shù)據(jù)搞亂掉”的技術(shù)。加密技術(shù)涉及到4種東東:

      明文:可以被人或程序識別的數(shù)據(jù)。例如一個(gè)文本文件、一段歌詞、一個(gè)Word文檔、一首MP3、一個(gè)圖片文件、一段視頻等等。

      加密算法:將數(shù)據(jù)搞亂掉的方法。

      密鑰(密碼):一個(gè)你在進(jìn)行加密操作時(shí)給出的字符串,讓加密算法不但把明文“搞亂掉”,而且要亂得“與眾不同”。這樣即使別人搞到了解密算法,如果沒有當(dāng)初加密時(shí)所使用的密碼,一樣無法進(jìn)行解密操作。

      密文:明文被加密算法和密鑰加密后的結(jié)果。它看上去就是一堆亂碼,沒有人或程序能知道它到底表示什么信息。

      作為加密的一個(gè)實(shí)例,我將使用由我杜撰的“景氏替換加密算法”演示一下加密過程。明文:good good study, day day up.密鑰:google

      景氏替換加密算法:將明文中的所有的字母“d”替換成密鑰。

      密文:將“good good study, day day up.”中的所有字母“d”替換成“google”,就得到密文“googoogle googoogle stugoogley,googleay googleay up.”。這個(gè)密文亂得還可以吧?一般人看了肯定不知道它是什么意思。

      那么什么是解密呢?解密就是把密文再變回明文的過程。

      例如“景氏替換解密算法”就是:將密文中所有與密鑰相同的字符串替換成“d”。密文:googoogle googoogle stugoogley,googleay googleay up.密鑰:google

      景氏替換解密算法:將密文中所有與密鑰相同的字符串替換成“d”。

      明文:將“googoogle googoogle stugoogley,googleay googleay up.”中的所有“google”替換成“d”,就得到了明文“good good study, day day up.”。

      您肯定已經(jīng)注意到了,我們在進(jìn)行加密和解密時(shí)使用的密鑰必須是相同的,例如在上例中,加密和解密都必須使用相同的密鑰“google”。所以像“景氏替換加密算法”這種就被稱為對稱加密算法。目前最為流行的對稱加密算法是DES和AES,此外,對稱加密算法還有IDEA、FEAL、LOKI、Lucifer、RC2、RC4、RC5、Blow fish、GOST、CAST、SAFER、SEAL等。WinRAR的文件加密功能就是使用的AES加密算法。

      非對稱加密

      非對稱加密算法是一類與眾不同的加密算法,它的密鑰不是1個(gè),而是2個(gè)(一對),我們先姑且稱它們?yōu)槊荑€K1和密鑰K2。非對稱加密算法的特點(diǎn)是,如果用密鑰K1進(jìn)行加密,則有且僅有密鑰K2能進(jìn)行解密;反之,如果使用密鑰K2進(jìn)行了加密,則有且僅有密鑰K1能進(jìn)行解密。注意“有且僅有”的意思——如果用密鑰K1進(jìn)行了加密,是不能用密鑰K1

      進(jìn)行解密的;同樣,如果用密鑰K2進(jìn)行了加密,也無法用密鑰K2進(jìn)行解密。這是一個(gè)非常重要的特性,至于如何在實(shí)際中運(yùn)用這個(gè)特性,請看下文。

      我想給Clark傳送一個(gè)AV小電影,又怕被他的老婆發(fā)現(xiàn)......話說俺得了一個(gè)很不錯(cuò)的AV小電影,想通過網(wǎng)絡(luò)傳送給Clark,可是又怕被他的老婆發(fā)現(xiàn)(因?yàn)镃lark的老婆是一個(gè)超級黑客,她可以使用sniffer技術(shù)截獲任何通過網(wǎng)線傳送給Clark的數(shù)據(jù)。別跟我說用VPN,它超出了本文討論的范圍),怎么辦呢?對了,我們需要一個(gè)“將數(shù)據(jù)搞亂掉”的技術(shù)——加密技術(shù)。我先使用WinRAR對小電影進(jìn)行壓縮,然后加上密碼“TswcbyyqjsjhfL”(還記得么?WinRAR的文件加密功能使用的是叫作AES的對稱加密算法)。接著,將這個(gè)加密后的文件通過QQ傳送給Clark。然后,興沖沖地?fù)艽駽lark的手機(jī): “喂?Clark么?好久不見,呵呵......我給你發(fā)了個(gè)好東東呦,在QQ上,收到?jīng)]?......密碼是TswcbyyqjsjhfL,對,就是天生我才必有用,千金散盡還復(fù)來的首字母,第一個(gè)和最后一個(gè)字母要大寫呦......”

      可是,Clark,我是真的不知道你的老婆大人剛剛就在你的身邊呀!而且你也知道,我打電話從來都是喜歡很大聲的......嗚嗚嗚......在Clark跪了一夜的搓衣板之后,我們都明白:如果是已經(jīng)保存在自己硬盤上的文件,使用對稱加密技術(shù)進(jìn)行加密是沒有問題的;如果是兩個(gè)人通過網(wǎng)絡(luò)傳輸文件,使用對稱加密就很危險(xiǎn)——因?yàn)樵趥魉兔芪牡耐瑫r(shí),還必須傳送解密密鑰。我們需要一個(gè)與眾不同的加密算法,一個(gè)不需要傳遞解密密鑰的加密算法。非對稱加密正好可以滿足我們的需要。基本思路是這樣的:首先,生成一對滿足非對稱加密要求的密鑰對(密鑰K1和密鑰K2)。然后,將密鑰K1公布在網(wǎng)上,任何人都可以下載它,我們稱這個(gè)已經(jīng)公開的密鑰K1為公鑰;密鑰K2自己留著,不讓任何人知道,我們稱這個(gè)只有自己知道的密鑰K2為私鑰。當(dāng)我想給Clark傳送小電影時(shí),我可以用Clark的公鑰對小電影進(jìn)行加密,之后這個(gè)密文就連我也無法解密了。這個(gè)世界上只有一個(gè)人能將密文解密,這個(gè)人就是擁有私鑰的Clark。

      后來......后來,Clark痛定思痛,決定申請一個(gè)數(shù)字證書。流程是這樣的:首先,登錄當(dāng)?shù)氐臄?shù)字證書認(rèn)證中心網(wǎng)站,填表->出示個(gè)人有效證件原件和復(fù)印件->繳費(fèi)->等待數(shù)字證書認(rèn)證中心制作數(shù)字證書->領(lǐng)取數(shù)字證書。如果您的公司需要申請大量的數(shù)字證書,還可以與認(rèn)證中心的銷售人員商量,先領(lǐng)取免費(fèi)的試用版的數(shù)字證書供技術(shù)人員試用。

      后來的后來,我又得到了一本電子版的不良漫畫,當(dāng)然,我又想到了Clark。我先在數(shù)字證書認(rèn)證中心下載了Clark的公鑰證書(就是一個(gè)含有公鑰信息的文件),使用非對稱加密算法對不良漫畫進(jìn)行加密,再將密文通過QQ傳送給Clark。然后,我興沖沖地?fù)艽駽lark的手機(jī): “喂?Clark么?好久不見,呵呵......我給你發(fā)了個(gè)好東東呦,在QQ上,收到?jīng)]?......已經(jīng)用你的公鑰加密了。用你的私鑰解密就行了^_^”

      Clark興沖沖地插入他的私鑰(忘了說了,私鑰并不是一個(gè)文件,而是一個(gè)USB設(shè)備,外形就跟U盤一樣,至于為什么要這樣,下一篇再說),解密,然后開始看漫畫,完全沒察覺他的老婆大人就在身后......Clark,俺這個(gè)月手頭有點(diǎn)緊......唉,這個(gè)月買了太多的書,到月底揭不開鍋了。正巧在QQ上遇到了Clark:

      1-2-3:“Clark,我需要200兩紋銀,能否借給我?”

      Clark:“沒問題。我這就給你轉(zhuǎn)賬。請給我一張借條?!?/p>

      1-2-3:“太謝謝了,我這就用Word寫一個(gè)借條給你。”

      然后,我新建一個(gè)Word文檔,寫好借條,存盤。然后,然后怎么辦呢?我不能直接把借條發(fā)送給Clark,原因有:

      1.我無法保證Clark不會在收到借條后將“紋銀200兩”改為“紋銀2000兩”。

      2.如果我賴賬,Clark無法證明這個(gè)借條就是我寫的。

      3.普通的Word文檔不能作為打官司的證據(jù)。

      好在我早就申請了數(shù)字證書。我先用我的私鑰對借條進(jìn)行加密,然后將加密后的密文用QQ發(fā)送給Clark。Clark收到了借條的密文后,在數(shù)字證書認(rèn)證中心的網(wǎng)站上下載我的公鑰,然后使用我的公鑰將密文解密,發(fā)現(xiàn)確實(shí)寫的是“借紋銀200兩”,Clark就可以把銀子放心的借給我了,我也不會擔(dān)心Clark會篡改我的借條,原因是:

      1.由于我發(fā)給Clark的是密文,Clark無法進(jìn)行修改。Clark倒是可以修改解密后的借條,但是Clark沒有我的私鑰,沒法模仿我對借條進(jìn)行加密。這就叫防篡改。

      2.由于用我的私鑰進(jìn)行加密的借條,有且只有我的公鑰可以解密。反過來講,能用我的公鑰解密的借條,一定是使用我的私鑰加密的,而只有我才擁有我的私鑰,這樣Clark就可以證明這個(gè)借條就是我寫的。這就叫防抵賴。

      3.如果我一直賴著不還錢,Clark把我告上了法庭,這個(gè)用我的私鑰加密過的Word文檔就可以當(dāng)作程堂證供。因?yàn)槲覈呀?jīng)出臺了《中華人民共和國電子簽名法》,使數(shù)字簽名具有了法律效力。

      您一定已經(jīng)注意到了,這個(gè)使用我的私鑰進(jìn)行了加密的借條,具有了防篡改、防抵賴的特性,并且可以作為程堂證供,就跟我對這個(gè)借條進(jìn)行了“簽名”的效果是一樣的。對了,“使用我的私鑰對借條進(jìn)行加密”的過程就叫做數(shù)字簽名。(由于數(shù)字簽名算法的速度比較慢,所以在實(shí)際對文件簽名的過程比上面提到的方法稍稍復(fù)雜一些,這個(gè)在下一篇再講)。

      我是1-2-3,我真的是1-2-3,我是真的1-2-

      3正如您已經(jīng)知道的,Clark的老婆是一名超級黑客——就是傳說中能用計(jì)算機(jī)作任何事的人。這不,不久前她就輕松入侵了QQ數(shù)據(jù)庫,下載了Clark的所有好友的ID和密碼以及聊天記錄。然后,時(shí)不時(shí)地偽裝成Clark的好友跟Clark聊天,搞得Clark最近總是神經(jīng)兮兮、疑神疑鬼的。這不,昨天我在QQ上遇到了Clark:

      1-2-3:“Clark,最近還好吧?我又搞到一個(gè)好東東呦,要不要?”

      Clark:“48475bbt556”

      Clark并不是瘋掉了,那個(gè)“48475bbt556”也不是我跟Clark之間的什么通關(guān)暗語。這個(gè)“48475bbt556”就是Clark在鍵盤上胡亂敲上去的,不過,我卻知道Clark是什么意思。我立刻把“48475bbt556”粘貼到Word里,然后用我的私鑰對這個(gè)Word文檔加密,再將這個(gè)Word文檔發(fā)送給Clark。Clark在那邊用我的公鑰將Word文檔解密,打開,發(fā)現(xiàn)里面寫的就是“48475bbt556”,就知道QQ這邊的確就是真正的我本人了。因?yàn)閾碛形业乃借€的人在這個(gè)世界上就只有我一人而已,Clark的老婆大人就是再神通廣大也模仿不了,這就是數(shù)字簽名的驗(yàn)證功能。

      順便提一句,不但人可以申請數(shù)字證書,設(shè)備(例如Web服務(wù)器)也可以申請數(shù)字證書(叫作設(shè)備證書)。利用數(shù)字簽名的驗(yàn)證功能,就可以驗(yàn)證服務(wù)器的身份了,這可是防釣魚的終極解決方案呦。

      第四篇:數(shù)字簽名課程設(shè)計(jì)

      數(shù)字簽名的目的和意義

      RSA公開密鑰加密算法自20世紀(jì)70年代提出以來,已經(jīng)得到了廣泛認(rèn)可和應(yīng)用。發(fā)展至今,電子安全領(lǐng)域的各方面已經(jīng)形成了較為完備的國際規(guī)范。RSA作為最重要的公開密鑰算法,在各領(lǐng)域的應(yīng)用數(shù)不勝數(shù)。RSA在硬件方面,以技術(shù)成熟的IC應(yīng)用于各種消費(fèi)類電子產(chǎn)品。

      RSA在軟件方面的應(yīng)用,主要集中在Internet上。加密連接、數(shù)字簽名和數(shù)字證書的核心算法廣泛使用RSA。日常應(yīng)用中,有比較著名的工具包Open SSL(SSL,Security Socket Layer,是一個(gè)安全傳輸協(xié)議,在Internet上進(jìn)行數(shù)據(jù)保護(hù)和身份確認(rèn)。Open SSL是一個(gè)開放源代碼的實(shí)現(xiàn)了SSL及相關(guān)加密技術(shù)的軟件包,由加拿大的Eric Yang等發(fā)起編寫的。Open SSL應(yīng)用RSA實(shí)現(xiàn)簽名和密鑰交換,已經(jīng)在各種操作系統(tǒng)得到非常廣泛的應(yīng)用。另外,家喻戶曉的IE瀏覽器,自然也實(shí)現(xiàn)了SSL協(xié)議,集成了使用RSA技術(shù)的加密功能,結(jié)合MD5和SHA1,主要用于數(shù)字證書和數(shù)字簽名,對于習(xí)慣于使用網(wǎng)上購物和網(wǎng)上銀行的用戶來說,幾乎天天都在使用RSA技術(shù)。

      RSA更出現(xiàn)在要求高度安全穩(wěn)定的企業(yè)級商務(wù)應(yīng)用中。在當(dāng)今的企業(yè)級商務(wù)應(yīng)用中,不得不提及使用最廣泛的平臺j2ee。事實(shí)上,在j2se的標(biāo)準(zhǔn)庫中,就為安全和加密服務(wù)提供了兩組API:JCA和JCE。JCA(Java Cryptography Architecture)提供基本的加密框架,如證書、數(shù)字簽名、報(bào)文摘要和密鑰對產(chǎn)生器; JCA由幾個(gè)實(shí)現(xiàn)了基本的加密技術(shù)功能的類和接口組成,其中最主要的是java.security包,此軟件包包含的是一組核心的類和接口,Java中數(shù)字簽名的方法就集中在此軟件包中。JCE(Java Cryptography Extension)在JCA的基礎(chǔ)上作了擴(kuò)展,JCE也是由幾個(gè)軟件包組成,其中最主要的是javax.crypto包,此軟件包提供了JCE加密技術(shù)操作API。javax.crypto中的Cipher類用于具體的加密和解密。在上述軟件包的實(shí)現(xiàn)中,集成了應(yīng)用RSA算法的各種數(shù)據(jù)加密規(guī)范(RSA算法應(yīng)用規(guī)范介紹參見: http://004km.cn/rsalabs/node.asp?id=2146,這些API內(nèi)部支持的算法不僅僅只有RSA,但是RSA是數(shù)字簽名和證書中最常用的),用戶程序可以直接使用java標(biāo)準(zhǔn)庫中提供的API進(jìn)行數(shù)字簽名和證書的各種操作。

      2.?dāng)?shù)字簽名算法的基本框架 1.密鑰的產(chǎn)生

      ①選擇兩個(gè)保密的大素?cái)?shù)P和q。②計(jì)算N=p q,≯(N)=(p-1)(g-1),其中≯(N)是N的歐拉函數(shù)值。③選擇一個(gè)整數(shù)e,滿足l

      ⑤以(e, n)為公鑰,(d ,N)為密鑰,銷毀p,q,≯(N)。2.加密

      加密時(shí)首先將明文比特串進(jìn)行分組,使得每個(gè)分組對應(yīng)得串在數(shù)值上小于N,即分組的二進(jìn)制長度小于l092N。然后,對每個(gè)明文分組M,作加密運(yùn)算:

      C=E k(M)=M e mod N 3.解密

      對密文分組的解密運(yùn)算為: M=D k(C)=C d mod N

      由定理1和定理2可以證明解密運(yùn)算能恢復(fù)明文M

      并非所有的公開密鑰系統(tǒng),均可同時(shí)達(dá)到秘密性與數(shù)字簽名功能。一般而言,一公開密鑰系統(tǒng)若作為密碼系統(tǒng),則無法作為數(shù)字簽名,反之亦然。只有很少數(shù) 的系統(tǒng)可同時(shí)作為密碼系統(tǒng)和數(shù)字簽名,如本文討論的RSA系統(tǒng)。RSA簽名算 法如下:

      設(shè)N=p q,且p和q是兩個(gè)大素?cái)?shù),e和d滿足e d≡l(mod ≯(N))。公開密鑰:N,e 私有密鑰:d

      簽名過程:發(fā)送方使用自己的私鑰d對明文m進(jìn)行數(shù)字簽名變換: y=x d mod N:并將加密后的消息和簽名y發(fā)送給接收方;

      驗(yàn)證過程:接收方使用發(fā)送方的公鑰e對收到的消息y進(jìn)行數(shù)字簽名驗(yàn)證變換x’=ye mod N,并使用發(fā)送方的密鑰解密恢復(fù)消息x,比較x’與x,如果x’=x則證實(shí)發(fā)送方的身份合法。

      這樣,用戶A若想用RSA簽名方案對消息x簽名,他只需公開他的公鑰N和e,由于簽名算法是保密的,因此A是唯一能產(chǎn)生簽名的人,任何要驗(yàn)證用戶A 簽名的用戶只需查到A的公鑰即可驗(yàn)證簽名。對于實(shí)現(xiàn)簽名和公鑰加密的組合,常用方法是:假定通信雙方為A和B。對于明文x,A計(jì)算他的簽名y=x d mod N,然后利用B的公開加密函數(shù)EB對信息對(x, y)加密得到Z,將密文Z傳送給B,當(dāng)B收到密文Z后,他首先用他的解密函數(shù)DB來解密得到(x,y)=DB(Z)= DB(EB(x,y)),然后利用A的驗(yàn)證算法來檢查x’=x=y e mod N是否成立。

      3.主要模塊的算法以及關(guān)鍵代碼

      ①.文件選擇模塊的主要算法及關(guān)鍵代碼 CfileDialog dlg(TRUE,NULL,“.簽名的文件”,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,NULL,NULL);if(dlg.DoModal()==IDOK){

      m_file_sign=dlg.GetPathName();} else m_file_sign=“";UpdateData(FALSE);②.保存公鑰的文件路徑的主要算法及關(guān)鍵代碼 CFileDialog dlg(FALSE,NULL,”.公鑰“,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,NULL,NULL);if(dlg.DoModal()==IDOK){

      m_pkey_sign=dlg.GetPathName();} else m_pkey_sign=”“;UpdateData(FALSE);③.保存簽名后的文件的路徑主要算法及關(guān)鍵代碼

      CFileDialog dlg(FALSE,NULL,”.簽名后的文件“,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,NULL,NULL);if(dlg.DoModal()==IDOK){

      m_signed_sign=dlg.GetPathName();} else m_signed_sign=”“;UpdateData(FALSE);④.?dāng)?shù)字簽名的主要算法及關(guān)鍵代碼 HCRYPTPROV hProv;//秘鑰容器句柄

      BYTE *pbBuffer;//被簽名的數(shù)據(jù)

      HCRYPTHASH hHash;HCRYPTKEY hKey;BYTE *pbKeyBlob;

      //簽名者得公鑰數(shù)據(jù)

      BYTE *pbSignature;

      //數(shù)字簽名

      DWORD dwSigLen;DWORD dwBlobLen;DWORD dwBufferLen;LPTSTR szDescription = ”“;

      CFile m_pubkey_file,m_sign_file,m_signdatafile;if(m_pkey_sign==”“||!m_pubkey_file.Open(m_pkey_sign,CFile::modeCreate|CFile::modeReadWrite)){

      MessageBox(”請選擇正確的保存公鑰的文件路徑“);return;} if(m_file_sign==”“||!m_signdatafile.Open(m_file_sign,CFile::modeReadWrite)){

      MessageBox(”請選擇正確的文件路徑“);return;} if(m_signed_sign==”“||!m_sign_file.Open(m_signed_sign,CFile::modeCreate|CFile::modeReadWrite)){

      MessageBox(”請選擇正確保存數(shù)字簽名的文件路徑“);return;} UpdateData(TRUE);m_state_sign=”“;//獲取缺省的秘鑰容器

      if(CryptAcquireContext(&hProv,NULL,NULL,m_prov_sign,0)){

      m_state_sign+=”已獲取CSP上下文,秘鑰生成算法:“+GetProvType(m_prov_sign)+”n“;} else

      //密鑰容器不存在創(chuàng)建之

      {

      if(CryptAcquireContext(&hProv,NULL,NULL,m_prov_sign,CRYPT_NEWKEYSET))

      m_state_sign+=”已創(chuàng)建一個(gè)新的密鑰容器,秘鑰生成算法:“+GetProvType(m_prov_sign)+”n“;

      else

      { m_state_sign+=MyHandleError(”在獲取CSP時(shí)發(fā)生錯(cuò)誤,程序停止.“);UpdateData(FALSE);return;} } // 從密鑰容器中取數(shù)字簽名用的密鑰

      if(CryptGetUserKey(hProv,AT_SIGNATURE,&hKey))

      m_state_sign+=”簽名密鑰已經(jīng)獲取.n“;else {

      if(GetLastError()== NTE_NO_KEY)//密鑰容器里不存在signature key pair創(chuàng)建之

      {

      if(CryptGenKey(hProv,//CSP句柄

      AT_SIGNATURE, //創(chuàng)建的密鑰對類型為signature key pair

      0, //key類型,這里用默認(rèn)值

      &hKey))

      //創(chuàng)建成功返回新創(chuàng)建的密鑰對的句柄

      m_state_sign+=”創(chuàng)建一個(gè)秘鑰對n“;

      else

      { m_state_sign+=MyHandleError(”在創(chuàng)建簽名密鑰對時(shí)發(fā)生錯(cuò)誤,程序停止.n“);UpdateData(FALSE);return;}

      }

      else

      {

      m_state_sign+=MyHandleError(”在獲取簽名密鑰時(shí)發(fā)生錯(cuò)誤,程序停止.“);UpdateData(FALSE);return;

      } } // 因?yàn)榻邮障⒄咭?yàn)證數(shù)字簽名,所以要導(dǎo)出公鑰給接收者。

      if(CryptExportKey(hKey,NULL,PUBLICKEYBLOB,0,NULL,&dwBlobLen))//得到公鑰的大小

      m_state_sign+=”已獲取公鑰的大小,“;else { m_state_sign+=MyHandleError(”計(jì)算公鑰大小時(shí)發(fā)生錯(cuò)誤,程序停止.“);UpdateData(FALSE);return;} // 為存儲公鑰的緩沖區(qū)分配內(nèi)存。

      if((pbKeyBlob =(BYTE*)malloc(dwBlobLen)))

      m_state_sign+=”已為公鑰分配內(nèi)存n“;else { m_state_sign+=MyHandleError(”為公鑰分配內(nèi)存時(shí)出現(xiàn)異常,退出.n“);UpdateData(FALSE);return;} // 真正導(dǎo)出公鑰數(shù)據(jù)

      if(CryptExportKey(hKey,NULL,PUBLICKEYBLOB,0,pbKeyBlob,//公鑰

      這個(gè)數(shù)據(jù)可以存入文件,發(fā)送給接收者。一般被存入數(shù)字證書

      &dwBlobLen)){

      m_pubkey_file.Write(pbKeyBlob,dwBlobLen);

      m_state_sign+=”已導(dǎo)出公鑰,存儲在“+m_pubkey_file.GetFilePath()+”n“;} else {

      m_state_sign+=MyHandleError(”導(dǎo)出公鑰時(shí)發(fā)生錯(cuò)誤,退出“);UpdateData(FALSE);return;} // 創(chuàng)建hash對象

      if(CryptCreateHash(hProv,m_hash_sign,//CALG_MD5,0,0,&hHash)){

      m_state_sign+=”已創(chuàng)建hash對象,加密算法“+GetHashType(m_hash_sign)+”nn“;} else { m_state_sign+=MyHandleError(”在創(chuàng)建hash對象時(shí)發(fā)生錯(cuò)誤,退出“);UpdateData(FALSE);return;}

      //把簽名的數(shù)據(jù)讀入內(nèi)存

      //分配空間

      if((pbBuffer=(BYTE *)malloc(m_signdatafile.GetLength())))

      m_state_sign+=”已經(jīng)為數(shù)據(jù)“+m_signdatafile.GetFilePath()+”分配空間nn“;else {

      m_state_sign+=MyHandleError(”為數(shù)據(jù)分配內(nèi)存時(shí)發(fā)生異常,退出“);UpdateData(FALSE);return;} if(m_signdatafile.Read(pbBuffer,m_signdatafile.GetLength()))//把數(shù)據(jù)讀入內(nèi)存

      m_state_sign+=”數(shù)據(jù)已經(jīng)讀入內(nèi)存!“;else {m_state_sign+=MyHandleError(”數(shù)據(jù)讀入內(nèi)存發(fā)生錯(cuò)誤,退出“);UpdateData(FALSE);return;} dwBufferLen = m_signdatafile.GetLength();// 對數(shù)據(jù)進(jìn)行hash運(yùn)算

      if(CryptHashData(hHash,pbBuffer,dwBufferLen,0))

      m_state_sign+=”已對數(shù)據(jù)進(jìn)行hash運(yùn)算n“;else { m_state_sign+=MyHandleError(”在對數(shù)據(jù)進(jìn)行hash運(yùn)算時(shí)發(fā)生錯(cuò)誤,退出.“);UpdateData(FALSE);return;} // 使用signature key pair的私鑰對hash數(shù)據(jù)簽名

      dwSigLen= 0;if(CryptSignHash(hHash,AT_SIGNATURE,szDescription,0,NULL,&dwSigLen))//得到數(shù)字簽名大小

      m_state_sign+=”已獲取數(shù)字簽名的大小,“;else { m_state_sign+=MyHandleError(”計(jì)算數(shù)字簽名大小時(shí)發(fā)生錯(cuò)誤,退出.“);UpdateData(FALSE);return;} // 為數(shù)字簽名緩沖區(qū)分配內(nèi)存

      if((pbSignature =(BYTE *)malloc(dwSigLen)))

      m_state_sign+=”已為數(shù)字簽名分配緩沖n“;else { m_state_sign+=MyHandleError(”為數(shù)字簽名分配內(nèi)存時(shí)異常,退出.“);UpdateData(FALSE);return;} // 得到數(shù)字簽名

      if(CryptSignHash(hHash,AT_SIGNATURE,szDescription,0,pbSignature, //這里將返回?cái)?shù)字簽名,同被簽名的數(shù)據(jù)一起發(fā)送給接收方

      &dwSigLen))

      {

      m_sign_file.Write(pbSignature,dwSigLen);

      m_state_sign+=”已導(dǎo)出數(shù)字簽名,存儲在“+m_sign_file.GetFilePath()+”nn“;} else {

      m_state_sign+=MyHandleError(”導(dǎo)出數(shù)字簽名時(shí)發(fā)生異常,退出.“);UpdateData(FALSE);return;} // 銷毀hash對象.if(hHash){

      CryptDestroyHash(hHash);

      m_state_sign+=”銷毀hash對象nn“;} m_state_sign+=”數(shù)字簽名成功nn“;//關(guān)閉文件

      m_pubkey_file.Close(),m_sign_file.Close(),m_signdatafile.Close(MessageBox(”數(shù)字簽名成功!“,”“,MB_OK);UpdateData(FALSE);⑤.?dāng)?shù)字簽名認(rèn)證的主要算法及關(guān)鍵代碼

      HCRYPTPROV hProv;HCRYPTKEY hPubKey;BYTE *pbKeyBlob;DWORD dwBlobLen;HCRYPTHASH hHash;BYTE *pbSignature;

      //數(shù)字簽名

      DWORD dwSigLen;LPTSTR szDescription = ”“;UpdateData(TRUE);m_state_veri=”“;// 獲得CSP句柄,密鑰容器名為登陸用戶名

      if(CryptAcquireContext(&hProv,NULL,NULL,PROV_RSA_FULL,0)){

      m_state_veri+=”已獲取CSP,秘鑰生成算法:);“+GetProvType(m_prov_veri)+”n“;} else

      //密鑰容器不存在創(chuàng)建之

      {

      if(CryptAcquireContext(&hProv,NULL,NULL,PROV_RSA_FULL,CRYPT_NEWKEYSET))

      m_state_veri+=”已創(chuàng)建一個(gè)新的密鑰容器秘鑰生成算法:“+GetProvType(m_prov_veri)+”n“;

      else

      { m_state_veri+=MyHandleError2(”在獲取密鑰容器時(shí)發(fā)生錯(cuò)誤,退出n“);UpdateData(FALSE);return;} } CFile signdatafile,yuanwenfile,pubkeyfile;if(m_pkey_veri==”“||!pubkeyfile.Open(m_pkey_veri,CFile::modeReadWrite)){

      MessageBox(”請選擇正確的公鑰文件!“);return;} if(m_file_veri==”“||!yuanwenfile.Open(m_file_veri,CFile::modeReadWrite)){

      MessageBox(”請選擇正確的原文件!“);return;}

      if(m_signed_veri==”“||!signdatafile.Open(m_signed_veri,CFile::modeReadWrite)){

      MessageBox(”請選擇正確的簽名文件!“);return;} dwBlobLen=pubkeyfile.GetLength();pbKeyBlob=(BYTE *)malloc(dwBlobLen);pubkeyfile.Read(pbKeyBlob,dwBlobLen);if(CryptImportKey(hProv,pbKeyBlob,dwBlobLen,0,0,&hPubKey))

      m_state_veri+=”公鑰已經(jīng)成功導(dǎo)入!nn“;else {

      m_state_veri+=MyHandleError2(”公鑰導(dǎo)出出錯(cuò).n“);UpdateData(FALSE);return;} // 創(chuàng)建哈希對象

      if(CryptCreateHash(hProv,m_hash_veri,//CALG_MD5,0,0,&hHash))

      m_state_veri+=”已經(jīng)獲取hash對象,hash算法“+GetHashType(m_hash_veri)+”nn“;else {

      m_state_veri+=MyHandleError2(”創(chuàng)建hash對象時(shí)出錯(cuò),退出“);UpdateData(FALSE);return;} // 跟生成時(shí)一樣對數(shù)據(jù)進(jìn)行hash運(yùn)算

      BYTE *pbBuffer;pbBuffer=(BYTE *)malloc(yuanwenfile.GetLength());yuanwenfile.Read(pbBuffer,yuanwenfile.GetLength());DWORD dwBufferLen = yuanwenfile.GetLength();pbSignature=(BYTE *)malloc(signdatafile.GetLength());signdatafile.Read(pbSignature,signdatafile.GetLength());dwSigLen = signdatafile.GetLength();if(CryptHashData(hHash,pbBuffer,dwBufferLen,0))

      m_state_veri+=”對數(shù)據(jù)hash運(yùn)算成功!nn“;else {

      m_state_veri+=MyHandleError2(”對數(shù)據(jù)進(jìn)行hash運(yùn)算出錯(cuò),退出“);UpdateData(FALSE);return;} // 驗(yàn)證數(shù)字簽名

      if(CryptVerifySignature(hHash,pbSignature, //數(shù)字簽名數(shù)據(jù)

      dwSigLen,hPubKey, //簽名者的公鑰

      szDescription,0))

      {

      MessageBox(”恭喜:是正確的數(shù)字簽名!“);

      m_state_veri+=”恭喜:是正確的數(shù)字簽名!“;} else {

      MessageBox(”錯(cuò)誤:簽名是錯(cuò)誤的n“);

      m_state_veri+=”錯(cuò)誤:簽名是錯(cuò)誤的n請檢查參數(shù)是否設(shè)置正確,若正確則請聯(lián)系發(fā)送方";} UpdateData(FALSE);//------

      // Free memory to be used to store signature.if(pbSignature)free(pbSignature);if(pbKeyBlob)free(pbKeyBlob);// Destroy the hash object.if(hHash)

      CryptDestroyHash(hHash);// Release the provider handle.if(hProv)

      CryptReleaseContext(hProv, 0);signdatafile.Close(),yuanwenfile.Close(),pubkeyfile.Close();4.RSA數(shù)字簽名算法運(yùn)行情況:

      4.1 主界面初始化

      4.2 簽名界面

      4.3 設(shè)置密鑰

      4.4 選擇簽名文件

      4.5 選擇保存公鑰位置

      4.6 選擇選擇簽名后保存位置

      4.6 進(jìn)行數(shù)字簽名結(jié)果

      4.7 進(jìn)行數(shù)字簽名認(rèn)證

      4.8 進(jìn)行數(shù)字簽名認(rèn)證結(jié)果

      5.總結(jié)與展望:

      通過本次對RSA算法的學(xué)習(xí),明白了該算法加密解密的原理,以及他的安全性問題和缺點(diǎn),通過這幾周的實(shí)驗(yàn),在學(xué)習(xí)中累計(jì)經(jīng)驗(yàn)解決問題,讓我對RSA算法有了較通透的理解,受益匪淺。隨著Internet的發(fā)展,實(shí)現(xiàn)電子商務(wù)是未來的潮流和趨勢,基于Internet開放環(huán)境下的信息安全將越來越受到重視,而RSA算法在身份認(rèn)證,數(shù)字簽名,信息加密等方面得到非常廣泛的應(yīng)用,對它作深入的了解是很有必要的。雖然RSA算法可靠性較高,但是還是有一些缺陷,就是運(yùn)算量太大,速度太慢,適合加密比較短的明文。RSA方法既可用于保密,也可用于簽名和認(rèn)證,目前已經(jīng)廣泛應(yīng)用與各種產(chǎn)品,平臺等軟件上。許多流行的操作系統(tǒng)上如微軟,Apple,Sun和Novell都是在其產(chǎn)品上融入RSA。在硬件上,如安全電話,以太網(wǎng)和智能卡都使用了RSA技術(shù)。而且?guī)缀跛蠭nternet安全協(xié)議如S/MIME,SSL和S/WAN都引入了RSA加密方法。ISO9796標(biāo)準(zhǔn)把RSA列為一種兼容的加密算法??梢灶A(yù)見,在不遠(yuǎn)的幾年內(nèi),RSA的 應(yīng)用將來會越來越廣泛。

      第五篇:數(shù)字簽名及安全電子郵件

      數(shù)字簽名及安全電子郵件

      一、背景知識

      使用個(gè)人證書,在電子郵件中至少有以下功能。

      保密性:你可以使用收件人的數(shù)字證書對電子郵件進(jìn)行加密。這樣,只有收件人的私鑰才能解密這封郵件,即使第三方截獲郵件,由于沒有收件人的私鑰,也無法閱讀該郵件。當(dāng)然,要發(fā)送加密電子郵件,必須先擁有對方的數(shù)字證書。

      認(rèn)證身份:你可以使用你本人的數(shù)字證書對電子郵件進(jìn)行數(shù)字簽名,這樣,收件人通過驗(yàn)證簽名就可以確定你的身份,而不是他人冒充的。

      完整性:如果驗(yàn)證數(shù)字簽名有效,收件人不僅可以認(rèn)證你的身份,還可以確信收到的郵件在傳遞的過程中沒有被篡改。

      不可否認(rèn)性:數(shù)字簽名要使用你本人數(shù)字證書中的私鑰,而私鑰僅你個(gè)人所有,所以,你不能對發(fā)送過的簽名郵件進(jìn)行否認(rèn)。

      1、電子郵件的重要性

      由于越來越多的人通過電子郵件發(fā)送機(jī)密信息,因此確保電子郵件中發(fā)送的文檔不是偽造的變得日趨重要。同時(shí)保證所發(fā)送的郵件不被除收件人以外的其他人截取和偷閱也同樣重要。

      通過使用 Outlook Express 和 Foxmail,可以在電子事務(wù)中證明身份,就象兌付支票時(shí)要出示有效證件一樣。也可以使用數(shù)字證書來加密郵件以保護(hù)郵件的保密性。數(shù)字證書結(jié)合了 S/MIME 規(guī)范來確保電子郵件的安全。

      2、對電子郵件進(jìn)行數(shù)字簽名 對電子郵件進(jìn)行數(shù)字簽名,能夠確保電子郵件中發(fā)送的文檔不是偽造的,即收件人能夠確信該郵件來自于其聲稱的發(fā)件人,同時(shí)郵件從發(fā)件人的機(jī)器傳達(dá)到接收人的機(jī)器沒有經(jīng)過任何改動。

      當(dāng)發(fā)件人在待發(fā)郵件中添加數(shù)字簽名時(shí),發(fā)件人就在郵件中加入了數(shù)字簽名和自己的數(shù)字證書。郵件的接收方接收到該郵件后,首先判斷發(fā)件人的證書是否有效(該證書是否是可信任的CA簽發(fā)的,該證書是否在有效期內(nèi),該證書是否已經(jīng)被撤銷),如果證書有效,從發(fā)件人的證書中提取公鑰信息,來驗(yàn)證郵件的數(shù)字簽名是否有效。

      3、對電子郵件進(jìn)行加密 對電子郵件進(jìn)行加密(使用接收人的數(shù)字證書中的公鑰進(jìn)行加密)可以保證所發(fā)送的郵件不被除收件人以外的其他人截取和偷閱。

      當(dāng)發(fā)件人對郵件進(jìn)行加密時(shí),使用接收人的數(shù)字證書中的公鑰對郵件進(jìn)行加密。郵件的接收方接收到該郵件后,使用自己的私鑰對郵件進(jìn)行解密,可以得到郵件的明文。因?yàn)槭褂霉€加密的數(shù)據(jù),只有對應(yīng)的私鑰才可以解密,而對一封加密郵件來說,只有接收人才具有對應(yīng)的私鑰,也就是只有接收人才可以對郵件解密得到郵件的明文。其他任何人截獲了該郵件都是無法識別的亂碼。有效的保證了郵件內(nèi)容的保密性。

      4、電子郵件證書使用的簡易性 如果接收到有問題的安全郵件,例如郵件已被篡改或發(fā)件人的數(shù)字證書已過期,則在被允許閱讀郵件內(nèi)容前,會看到一條安全警告,它詳細(xì)說明了問題所在。根據(jù)警告中的信息,接收人可以決定是否查看郵件。

      以上所述的簽名和加密郵件的過程都是由郵件客戶端程序(如Microsoft Outlook,F(xiàn)oxmail、Netscape Messager等)來完成。對于郵件的發(fā)送人來說,就是在郵件發(fā)送之前,簡單的點(diǎn)擊“簽名”和“加密”按鈕就可以了;對于郵件的接收人來說,郵件接收到后,郵件客戶端程序更能夠自動對簽名郵件進(jìn)行驗(yàn)證,對加密郵件進(jìn)行解密,并將驗(yàn)證和解密結(jié)果顯示給郵件的接收人,不需要任何人工操作,非常方便。

      5、安全電子郵件的工作方式

      安全電子郵件的工作方式有兩種:

      第一種情況是采用個(gè)人或單位證書發(fā)送安全電子郵件。如吉林省數(shù)字證書認(rèn)證中心、廣東省數(shù)字證書認(rèn)證中心等就頒發(fā)個(gè)人證書或單位證書,然后你可以選擇用這兩種證書發(fā)送安全的電子郵件。

      第二種方式是直接給電子信箱的所有人或單位的電子信箱地址頒發(fā)數(shù)字證書,如江西省數(shù)字證書認(rèn)證中心、安徽省數(shù)字認(rèn)證中心等就頒發(fā)專門的郵件證書。

      由于以上兩種方式的原理基本一樣,考慮到網(wǎng)上的免費(fèi)資源,我們以第一種方式為主加以說明。

      當(dāng)然,在第一種方式中使用單位證書發(fā)送安全郵件的原理基本一樣,由于網(wǎng)上單位證書的免費(fèi)資源很少,因此,我們重點(diǎn)以個(gè)人證書為例。另外,要發(fā)送安全電子郵件,必須使用一些電子郵件客戶端軟件,如Outlook Express、Foxmail等,打開網(wǎng)頁收發(fā)郵件是不能進(jìn)行數(shù)字簽名的,我們這里以O(shè)utlook Express 5.0為例,說明安全電子郵件的發(fā)送過程。

      二、實(shí)驗(yàn)?zāi)康募耙?/p>

      1、掌握用Outlook Express發(fā)送數(shù)字簽名電子郵件的方法。

      2、掌握用Outlook Express發(fā)送加密電子郵件的方法。

      三、實(shí)驗(yàn)準(zhǔn)備

      1、上網(wǎng)計(jì)算機(jī),IE5.0以上,Outlook Express 5.0以上。

      2、已經(jīng)申請好個(gè)人數(shù)字證書(本實(shí)驗(yàn)以在廣東省數(shù)字證書認(rèn)證中心申請的個(gè)人免費(fèi)證書為例)。

      四、實(shí)驗(yàn)過程

      1、修改電子郵件帳號屬性,綁定證書

      (1)在Outlook Express5.0單擊“工具”菜單中的“帳號”,選取郵件選項(xiàng)卡中的用于發(fā)送安全電子郵件的郵件帳號,然后單擊“屬性”,選擇安全標(biāo)簽,在簽名證書標(biāo)識項(xiàng)后,點(diǎn)擊選擇按鈕,如圖9.1所示。

      圖9.1 安全屬性

      (2)選擇數(shù)字證書,如圖9.2、圖9.3所示。

      圖9.2 選擇簽名證書

      圖9.3 已經(jīng)設(shè)置好簽名證書

      3)如果希望對方能給你發(fā)送加密電子郵件,則點(diǎn)擊加密首選項(xiàng),再選擇你的證書及算法,如圖9.4所示。

      圖9.4 已經(jīng)設(shè)置好簽名和加密數(shù)字證書

      2、發(fā)送數(shù)字簽名電子郵件

      (1)打開Outlook Express,點(diǎn)擊新郵件,輸入對方的郵件地址,并點(diǎn)擊“簽名”按鈕,然后點(diǎn)擊發(fā)送,如圖9.5所示。

      圖9.5 撰寫數(shù)字簽名郵件

      (2)對方用Outlook Express收到你的郵件后,首先顯示圖9.6所示提示。

      圖9.6 收到數(shù)字簽名郵件

      (3)點(diǎn)擊繼續(xù),打開郵件,如圖9.7所示。

      圖9.7 打開簽名郵件

      3、發(fā)送加密電子郵件

      (1)當(dāng)用戶擁有了對方的數(shù)字證書,并添加到通訊薄中就可以向?qū)Ψ桨l(fā)送加密的電子郵件了,如圖9.8所示。

      圖9.8 通訊簿中查看對方數(shù)字證書

      (2)打開Outlook Express,點(diǎn)擊新郵件,輸入對方的郵件地址,并點(diǎn)擊“加密”按鈕,如圖9.9所示。

      圖9.9 發(fā)送加密電子郵件

      (3)對方用Outlook Express收到郵件后首先顯示圖9.10所示的提示。

      圖9.10收到加密電子郵件

      (4)點(diǎn)擊繼續(xù),打開郵件,如圖9.11所示。

      圖9.11 打開加密電子郵件

      (5)如果你沒有對方的數(shù)字證書,是不能發(fā)送加密郵件的,如圖9.11、圖9.12所示。

      圖9.11 無對方證書發(fā)送加密郵件

      圖9.12 系統(tǒng)提示出錯(cuò)

      (6)當(dāng)然,也可以發(fā)送同時(shí)加密和簽名的電子郵件,如圖9.13、圖9.14、圖9.15所示。

      圖9.13 同時(shí)發(fā)送簽名和加密郵件

      圖9.14 收到簽名和加密郵件

      圖9.15 打開簽名和加密郵件

      至此,我們已經(jīng)完成了安全電子郵件的全部操作,即如何發(fā)送加密的和簽名的電子郵件,需要指出的是,有許多免費(fèi)郵箱是在網(wǎng)頁下收發(fā)郵件的,在此情況下一般不能使用數(shù)字證書。

      五、練習(xí)與思考

      1、加密郵件與簽名郵件有什么區(qū)別?

      2、隨著中華人民共和國電子簽名法的頒布實(shí)施,你認(rèn)為簽名電子郵件具有法律效力嗎?

      3、為什么發(fā)送加密郵件需要對方的數(shù)字證書?其加密原理是什么?

      4、能用他人的證書發(fā)送簽名郵件嗎?為什么?

      5、請用FOXMAIL設(shè)置簽名及加密郵件,比較與Outlook express的異同。

      下載數(shù)字簽名方案的實(shí)現(xiàn)word格式文檔
      下載數(shù)字簽名方案的實(shí)現(xiàn).doc
      將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
      點(diǎn)此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報(bào),并提供相關(guān)證據(jù),工作人員會在5個(gè)工作日內(nèi)聯(lián)系你,一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

      相關(guān)范文推薦

        數(shù)字簽名及哈希函數(shù)

        數(shù)字簽名與哈希函數(shù) 懂得一點(diǎn)公鑰密碼基礎(chǔ)知識的人都知道,發(fā)信息的人用自己的私鑰對所發(fā)信息進(jìn)行加密( Encryption ),接收信息者用發(fā)信者的公鑰來解密( Decryption ),就可以保......

        數(shù)字簽名是什么--圖文示意說明

        數(shù)字簽名是什么? 原文網(wǎng)址: http://004km.cn/blog/2011/08/what_is_a_digital_signature.html http://004km.cn/signature.html 以圖片通俗易懂解釋:"數(shù)字......

        非對稱加密及數(shù)字簽名解析5篇

        鮑勃有兩把鑰匙,一把是公鑰,另一把是私鑰。 鮑勃把公鑰送給他的朋友們----帕蒂、道格、蘇珊----每人一把。 蘇珊要給鮑勃寫一封保密的信。她寫完后用鮑勃的公鑰加密,就可以達(dá)......

        工商注冊文件數(shù)字簽名步驟[全文5篇]

        工商注冊文件數(shù)字簽名步驟 一、在電腦上下載并安裝Adobe Acrobat Reader DC(如果已有,可直接進(jìn)入下一步驟) 二、下載安裝相應(yīng)的驅(qū)動,然后插入銀行UKEY到電腦,讓此電腦能登錄網(wǎng)銀......

        隧道實(shí)現(xiàn)方案總結(jié)

        華為隧道配置方案總結(jié) 1 IPv4 over IPv6隧道配置 1.1 IPv4 over IPv6隧道簡介 在IPv4 Internet向IPv6 Internet過渡的后期,IPv6網(wǎng)絡(luò)已被大量部署,此時(shí)可能出現(xiàn)IPv4孤島。利用......

        RSA數(shù)字簽名在電子商務(wù)中的應(yīng)用

        RSA數(shù)字簽名算法探析 摘 要 隨著電子商務(wù)飛速發(fā)展、普及和應(yīng)用,安全問題已經(jīng)成為電子商務(wù)發(fā)展的瓶頸。本文從電子商務(wù)交易過程對電子商務(wù)安全性的需求出發(fā),介紹了數(shù)字簽名的原......

        數(shù)字簽名技術(shù)在電子商務(wù)中的應(yīng)用

        公選課論文 數(shù)字簽名技術(shù)在電子商務(wù)中的應(yīng)用 袁志祥 0915034120 生化工程系 輕化1班 方明 學(xué)生姓名: 學(xué)號: 所在系部: 專業(yè)班級: 評閱老師: 日期: 二○一一年六月 摘 要 以互聯(lián)網(wǎng)......

        數(shù)字簽名、電子簽名和數(shù)字證書之間的區(qū)別是什么?

        什么是數(shù)字證書? 由于 Internet 網(wǎng)電子商務(wù)系統(tǒng)技術(shù)使在網(wǎng)上購物的顧客能夠極其方便輕松地獲得商家和企 業(yè)的信息,但同時(shí)也增加了對某些敏感或有價(jià)值的數(shù)據(jù)被濫用的風(fēng)險(xiǎn). 為......