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

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

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

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

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

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

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

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

      鮑勃有兩把鑰匙,一把是公鑰,另一把是私鑰。

      鮑勃把公鑰送給他的朋友們----帕蒂、道格、蘇珊----每人一把。

      蘇珊要給鮑勃寫一封保密的信。她寫完后用鮑勃的公鑰加密,就可以達(dá)到保密的效果。

      鮑勃收信后,用私鑰解密,就看到了信件內(nèi)容。這里要強(qiáng)調(diào)的是,只要鮑勃的私鑰不泄露,這封信就是安全的,即使落在別人手里,也無法解密。

      鮑勃給蘇珊回信,決定采用“數(shù)字簽名”。他寫完后先用Hash函數(shù),生成信件的摘要(digest)。

      然后,鮑勃使用私鑰,對這個(gè)摘要加密,生成“數(shù)字簽名”(signature)。

      鮑勃將這個(gè)簽名,附在信件下面,一起發(fā)給蘇珊。

      蘇珊再對信件本身使用Hash函數(shù),將得到的結(jié)果,與上一步得到的摘要進(jìn)行對比。如果兩者一致,就證明這封信未被修改過。

      復(fù)雜的情況出現(xiàn)了。道格想欺騙蘇珊,他偷偷使用了蘇珊的電腦,用自己的公鑰換走了鮑勃的公鑰。此時(shí),蘇珊實(shí)際擁有的是道格的公鑰,但是還以為這是鮑勃的公鑰。因此,道格就可以冒充鮑勃,用自己的私鑰做成“數(shù)字簽名”,寫信給蘇珊,讓蘇珊用假的鮑勃公鑰進(jìn)行解密。

      后來,蘇珊感覺不對勁,發(fā)現(xiàn)自己無法確定公鑰是否真的屬于鮑勃。她想到了一個(gè)辦法,要求鮑勃去找“證書中心”(certificate authority,簡稱CA),為公鑰做認(rèn)證。證書中心用自己的私鑰,對鮑勃的公鑰和一些相關(guān)信息一起加密,生成“數(shù)字證書”(Digital Certificate)。

      鮑勃拿到數(shù)字證書以后,就可以放心了。以后再給蘇珊寫信,只要在簽名的同時(shí),再附上數(shù)字證書就行了。

      CA的公鑰解開數(shù)字證書,就可以拿到鮑勃真實(shí)的公鑰了,然后就能證明“數(shù)字簽名”是否真的是鮑勃簽的。

      下面,我們看一個(gè)應(yīng)用“數(shù)字證書”的實(shí)例:https協(xié)議。這個(gè)協(xié)議主要用于網(wǎng)頁加密。

      首先,客戶端向服務(wù)器發(fā)出加密請求。

      服務(wù)器用自己的私鑰加密網(wǎng)頁以后,連同本身的數(shù)字證書,一起發(fā)送給客戶端。

      客戶端(瀏覽器)的“證書管理器”,有“受信任的根證書頒發(fā)機(jī)構(gòu)”列表??蛻舳藭鶕?jù)這張列表,查看解開數(shù)字證書的公鑰是否在列表之內(nèi)。

      如果數(shù)字證書記載的網(wǎng)址,與你正在瀏覽的網(wǎng)址不一致,就說明這張證書可能被冒用,瀏覽器會發(fā)出警告。

      如果數(shù)字證書是可靠的,客戶端就可以使用證書中的服務(wù)器公鑰,對信息進(jìn)行加密,然后與服務(wù)器交換加密信息。

      HTTPS(HypertextTransfer Protocol Secure)即安全的HTTP。HTTPS的安全基礎(chǔ)是安全套接層(Secure Sockets Layer,SSL)。HTTP工作在應(yīng)用層(OSI模型的最高層),SSL協(xié)議工作在一個(gè)較低的子層,位于TCP/IP協(xié)議和HTTP協(xié)議之間。在HTTP報(bào)文傳輸前對其加密,并在到達(dá)時(shí)對其解密。嚴(yán)格地講,HTTPS并不是一個(gè)單獨(dú)的協(xié)議,而是工作在SSL協(xié)議上的HTTP協(xié)議。

      HTTPS主要作用有兩種:(1)確認(rèn)通訊雙方的身份,(2)建立安全通道,保證數(shù)據(jù)傳輸安全。

      HTTPS與HTTP協(xié)議的差異

      (1).HTTP 的URL是以“http://”開始,HTTPS的URL是以“https://”開始;(2).HTTP默認(rèn)端口為80,HTTPS的默認(rèn)端口為443;(3).采用HTTPS的Web Server需要到CA申請證書;

      (4).HTTPS由HTTP+SSL來實(shí)現(xiàn),可進(jìn)行加密傳輸、身份認(rèn)證等,要比HTTP安全(5).HTTP的信息是明文傳輸,而HTTPS的信息是加密傳輸

      用公鑰加密的數(shù)據(jù)只有私鑰才能解密;相反的,用私鑰加密的數(shù)據(jù)只有公鑰才能解密,正是這種不對稱性才使得公用密鑰密碼系統(tǒng)被廣泛應(yīng)用。

      第二篇:數(shù)字簽名和證書在網(wǎng)絡(luò)技術(shù)加密中的綜合應(yīng)用

      數(shù)字簽名和證書在網(wǎng)絡(luò)技術(shù)加密中的綜合應(yīng)用

      摘要 隨著網(wǎng)絡(luò)技術(shù)的發(fā)展,引發(fā)各種競爭,網(wǎng)絡(luò)安全問題也被提上議事日程。在加密技術(shù)應(yīng)用中,數(shù)字簽名和數(shù)字證書技術(shù)都是信息保密的重要技術(shù)方法,如果把數(shù)字簽名和數(shù)字證書結(jié)合起來,綜合應(yīng)用,則更能有效提高網(wǎng)絡(luò)信息安全程度,而且過程簡潔,兩種技術(shù)無縫接軌,能有效保證網(wǎng)絡(luò)信息傳遞的安全,值得在實(shí)踐中進(jìn)一步發(fā)展創(chuàng)新。

      關(guān)鍵詞 數(shù)字簽名;數(shù)字證書;網(wǎng)絡(luò);加密

      中圖分類號TP39 文獻(xiàn)標(biāo)識碼A 文章編號 1674-6708(2010)31-0200-02

      0 引言

      隨著計(jì)算機(jī)技術(shù)的快速發(fā)展,信息網(wǎng)絡(luò)技術(shù)廣泛推普應(yīng)用,與之相應(yīng)的網(wǎng)絡(luò)安全問題也被提上議事日程。因?yàn)樾畔⑴c網(wǎng)絡(luò)涉及到國家的各個(gè)方面,包括政治的、經(jīng)濟(jì)的、軍事的、文化的等諸多領(lǐng)域,在計(jì)算機(jī)網(wǎng)絡(luò)中存儲、傳輸和處理的信息,包括政府部門的宏觀調(diào)控決策、國家安全信息、商業(yè)經(jīng)濟(jì)信息、銀行資金轉(zhuǎn)賬、股票證券、能源資源數(shù)據(jù)和高科技科研數(shù)據(jù)等息,其中有很多是敏感信息和國家機(jī)密,所以承載和集散這些數(shù)據(jù)信息的載體,如網(wǎng)絡(luò)、計(jì)算機(jī)等,難免會成為各種攻擊和破壞的對象。萬維網(wǎng)絡(luò)因之不斷地遭遇黑客的攻擊、破壞搗亂,許多國家機(jī)密及重要情報(bào)資料被竊取和破壞,甚至造成局部網(wǎng)絡(luò)系統(tǒng)的癱瘓等,這些破壞行為已經(jīng)給各個(gè)國家、眾多使用計(jì)算機(jī)網(wǎng)絡(luò)的部門和個(gè)人造成程度不同的損失。特別是,當(dāng)許多安全保密應(yīng)對措施出現(xiàn)的時(shí)候,網(wǎng)絡(luò)攻擊又更猖獗,近乎達(dá)到無孔不入的地步。因此,提高安全意識,加強(qiáng)網(wǎng)絡(luò)技術(shù)的安保措施,實(shí)施網(wǎng)絡(luò)技術(shù)加密,保障網(wǎng)絡(luò)使用安全,已經(jīng)成為網(wǎng)絡(luò)技術(shù)應(yīng)用和發(fā)展的重要內(nèi)容。

      目前,最常用的網(wǎng)絡(luò)安全防護(hù)技術(shù)主要有:加密技術(shù)、身份驗(yàn)證技術(shù)、網(wǎng)絡(luò)防病毒技術(shù)和防火墻技術(shù)等。這些技術(shù)各有千秋,都能對網(wǎng)絡(luò)信息安全保障,立下汗馬功勞,但又各有不足。尤其是,以往的安全防范措施多是各自為政,互不關(guān)聯(lián),其防范效果也就有限了。我們設(shè)想,如果把幾種加密技術(shù)和措施結(jié)合起來使用,可能有效提高加密層級,比如,把加密技術(shù)和身份驗(yàn)證技術(shù)結(jié)合應(yīng)用,其安全效果當(dāng)大幅度提高,保障性更強(qiáng)。其初步的界定是:加密技術(shù)和身份驗(yàn)證技術(shù)相結(jié)合,是指對在網(wǎng)絡(luò)中所發(fā)送的明文消息,用加密密鑰加密成密文進(jìn)行傳送,同時(shí)給以數(shù)字簽名和數(shù)字證書保障,接收方用解密密鑰進(jìn)行解密,核對證書,確認(rèn)身份,再現(xiàn)明文消息,從而保證傳輸過程中密文信息即使被泄露,在無密鑰的情況下仍是安全保密的。通過數(shù)字簽名和數(shù)字證書技術(shù)的結(jié)合應(yīng)用,以很小的投入和代價(jià),提供可靠的安全保護(hù),目的是保護(hù)有關(guān)數(shù)據(jù)、文件、口令和控制信息,保護(hù)網(wǎng)上集散的信息數(shù)據(jù),能有效地保證網(wǎng)絡(luò)技術(shù)應(yīng)用和信息資料的安全。數(shù)字簽名

      1.1 數(shù)字簽名的界定

      所謂數(shù)字簽名(Digital Signature),是公開密鑰加密技術(shù)的一種應(yīng)用,是指用發(fā)送方的私有密鑰加密報(bào)文摘要,然后將其與原始的信息附加在一起,合稱為數(shù)字簽名。

      1.2 數(shù)字簽名的使用方法

      數(shù)字簽名的具體使用方法是:報(bào)文的發(fā)送方從報(bào)文文本中生成一個(gè)128位或160位的單向散列值(或報(bào)文摘要),并用自己的私有的密鑰對這個(gè)散列值進(jìn)行加密,形成發(fā)送方的數(shù)字簽名;然后將這個(gè)數(shù)字簽名作文的附件和報(bào)文一起發(fā)送給報(bào)文的接收方;報(bào)文的接收方首先從接收到的原始報(bào)文中計(jì)算出128位的散列值(或報(bào)文摘要),接著再用發(fā)送方的公開密鑰對報(bào)文附加的數(shù)字簽名進(jìn)行解密;如果這兩個(gè)散列值相同,那么接收方就能確認(rèn)數(shù)字簽名是發(fā)送方的。通過數(shù)字簽名能夠?qū)崿F(xiàn)對原始報(bào)文的鑒別和驗(yàn)證,保證報(bào)文的完整性、權(quán)威性和發(fā)送者對報(bào)文的不可抵賴性。數(shù)字簽名機(jī)制提供了一種鑒別方法,普遍用于銀行、電子商務(wù)等,以解決偽造、抵賴、冒充、篡改等問題。

      1.3 數(shù)字簽名的技術(shù)實(shí)現(xiàn)

      在技術(shù)實(shí)現(xiàn)上,數(shù)字簽名的步驟一般有如下幾步:

      1)發(fā)送方用一個(gè)Hash函數(shù)對消息進(jìn)行處理,產(chǎn)生消息摘要(Message Digest);

      2)發(fā)送方將自己的私人密鑰和消息摘要進(jìn)行DSA算法(Digital Signature Algorithm)計(jì)算,產(chǎn)生數(shù)字簽名;

      3)將數(shù)字簽名和消息一起發(fā)送出去;

      4)接收方用同樣的Hash函數(shù)對消息進(jìn)行計(jì)算,產(chǎn)生消息摘要;

      5)接收方用DSA算法消息摘要和發(fā)送方的公開密鑰進(jìn)行計(jì)算,產(chǎn)生數(shù)字簽名S1。同時(shí)從接收到的消息中可以得到附加的數(shù)字簽名S2。對比數(shù)字簽名S1和S2,若S1與S2相等,則該數(shù)字簽名得到驗(yàn)證,否則數(shù)字簽名驗(yàn)證失敗,消息發(fā)出后可能曾被修改或者是偽造的。整個(gè)過程如圖1。

      圖1數(shù)字簽名及其驗(yàn)證過程

      數(shù)字簽名因其使用方便,技術(shù)層級高,在網(wǎng)絡(luò)信息傳遞的保密過程中,最常應(yīng)用。數(shù)字證書

      2.1 數(shù)字證書的概念

      顧名思義,數(shù)字證書是一個(gè)文件。數(shù)字證書(Digital Certification,Digital ID)是網(wǎng)絡(luò)上用以證實(shí)一個(gè)用戶的身份和證實(shí)其對網(wǎng)絡(luò)資源的訪問權(quán)限。它是一個(gè)加密并用口令保護(hù)的文件,一般的數(shù)字證書總是把一個(gè)密鑰同一個(gè)用戶的一個(gè)或多個(gè)屬性進(jìn)行綁定。數(shù)字證書包含有證書擁有者的個(gè)人主要信息,可以編碼的信息、證書驗(yàn)證機(jī)構(gòu)CA(Certification Authority)和證實(shí)的有效期等。其中,個(gè)人信息包括證書持有者的姓名、證件編號和電子郵件地址等等,編碼的信息指文件中包含一個(gè)公開密鑰以用來驗(yàn)證消息發(fā)送者事先用匹配的私有密鑰簽過的數(shù)字簽名。數(shù)字證書的內(nèi)部格式由CC ITTX.509國際標(biāo)準(zhǔn)所規(guī)定。

      2.2 數(shù)字證書的傳輸

      一般是每一個(gè)公鑰做一張數(shù)字證書,私鑰用最安全的方式交給用戶或自己生產(chǎn)密鑰對,數(shù)字證書的內(nèi)容包括用戶的公鑰、姓名、發(fā)證機(jī)構(gòu)的數(shù)字簽名及用戶的其他信息,對方可以借此來驗(yàn)證身份的真假。當(dāng)然,證書必須預(yù)防密鑰丟失,可采用恢復(fù)密鑰和密鑰托管等方式處理丟失問題。證書的有效期超過后,必須重新簽發(fā),如果私鑰丟失或被非法使用,則應(yīng)廢止證書。數(shù)字簽名與數(shù)字證書的綜合使用

      把數(shù)字簽名和數(shù)字證書技術(shù)兩者綜合起來,一起用于信息傳遞過程的保密工作,可以有效地提高加密層級,保障網(wǎng)絡(luò)信息安全。這主要是因?yàn)槠浔C苓^程增加了幾道防范措施。數(shù)字簽名和數(shù)字證書綜合應(yīng)用于網(wǎng)絡(luò)信息加密,其過程依附在信息傳遞過程中的。

      3.1 數(shù)字簽名和數(shù)字證書的綜合應(yīng)用流程

      1)發(fā)送者A將一個(gè)簽名的證書請求(包含她的名字、公鑰、可能還有其他一些信息)發(fā)送到CA。

      2)CA使用發(fā)送者A 的請求創(chuàng)建一個(gè)消息。CA使用其私鑰對消息進(jìn)行簽名,以便創(chuàng)建一個(gè)單獨(dú)的簽名。CA將消息和簽名返回給發(fā)送者A。消息和簽名共同構(gòu)成了發(fā)送者A的證書。

      3)發(fā)送者A將證書發(fā)送給發(fā)送者B,以便授權(quán)他訪問發(fā)送者A的公鑰。

      4)發(fā)送者B使用CA的公鑰對證書簽名進(jìn)行驗(yàn)證。如果證書簽名是有效的,就承認(rèn)證書中的公鑰是發(fā)送者A的公鑰。

      圖2數(shù)字認(rèn)證過程

      與數(shù)字簽名的情況一樣,任何有權(quán)訪問CA公鑰的接收者都可以確定證書是否由特定CA 簽名的。這個(gè)過程不要求訪問任何機(jī)密信息。上面這個(gè)方案假定發(fā)送者B有權(quán)訪問CA的公鑰。如果發(fā)送者B擁有發(fā)含該公鑰的CA證書副本,則他有權(quán)訪問該密鑰。具體的認(rèn)證過程如圖2。

      從這過程看來,數(shù)字簽名和數(shù)字證書兩種技術(shù),其應(yīng)用過程并不矛盾,不會產(chǎn)生排斥,倒是能互相照應(yīng),無縫接軌,過程也很簡潔,使用方便。

      3.2 數(shù)字簽名和數(shù)字證書的綜合應(yīng)用舉例

      把數(shù)字加密和數(shù)字證書結(jié)合起來,可以加大網(wǎng)絡(luò)信息保密的力度。假如甲方要給乙方供應(yīng)商發(fā)送一份業(yè)務(wù)合同,其步驟可以是:

      第一步,在文字處理軟件中填寫合同內(nèi)容細(xì)節(jié),在文檔地步,插入電子簽名,表示甲方已經(jīng)確認(rèn)合同;

      第二步,用數(shù)字簽名來生成一個(gè)唯一的數(shù)字,這就使得合同有了甲方的電子簽名和數(shù)字簽名,附在文件中,以保證合同條款年內(nèi)容不被修改;

      第三步,用私有數(shù)字證書對這合同文件進(jìn)行簽名。然后,用電子郵箱把合同文件發(fā)給乙方供應(yīng)商。

      乙方供應(yīng)商收到合同文件之后,現(xiàn)獲得甲方的公鑰數(shù)字證書,確保電子郵件的確來自甲方。乙方運(yùn)行數(shù)字簽名持續(xù)來驗(yàn)證合同文件在甲方發(fā)出之后沒有被修改。最后乙方打開文件,在文件底部的電子簽名處,看到甲方同意合同條款的簽名。這樣,幾個(gè)環(huán)節(jié)和程序都獲得證實(shí),合同文件確實(shí)來自甲方,并未被泄密或被修改。然后,乙方即可處理甲方來件,即處理合同訂單。這就是經(jīng)過數(shù)字證書和數(shù)字簽名等保密技術(shù)保護(hù)的網(wǎng)絡(luò)信息傳遞過程。作為比較可靠的數(shù)字加密技術(shù),數(shù)字簽名和數(shù)字證書的結(jié)合,可以應(yīng)用于電子郵件、電子支付、電子基金轉(zhuǎn)移等各種用途,以保障其信息安全。結(jié)論

      隨著計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)的迅猛發(fā)展,網(wǎng)絡(luò)安全問題日益成為人們關(guān)注的焦點(diǎn),加密技術(shù)與網(wǎng)絡(luò)安全密切相關(guān),網(wǎng)絡(luò)加密的技術(shù)和理論也將不斷完善和發(fā)展,在網(wǎng)絡(luò)安全中的應(yīng)用也將越來越廣。作為具體的加密技術(shù)應(yīng)用,數(shù)字簽名和數(shù)字證書這兩種技術(shù),各有千秋,而把兩者結(jié)合起來,綜合應(yīng)用,則更能有效保證網(wǎng)絡(luò)信息傳遞的安全,值得在實(shí)踐中進(jìn)一步發(fā)展創(chuàng)新。

      參考文獻(xiàn)

      [1]Atul Kahate著.邱仲潘,等譯.密碼學(xué)與網(wǎng)絡(luò)安全[M].清華大學(xué)出版社,2005.[2]王玲.網(wǎng)絡(luò)信息安全的數(shù)據(jù)加密技術(shù)[M].信息安全與通信保密,2007.[3]王群.計(jì)算機(jī)網(wǎng)絡(luò)安全技術(shù)[M].清華大學(xué)出版社,2008.

      第三篇: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è)很不錯的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è)借條給你?!?/p>

      然后,我新建一個(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ā)生錯誤,程序停止.“);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ā)生錯誤,程序停止.n“);UpdateData(FALSE);return;}

      }

      else

      {

      m_state_sign+=MyHandleError(”在獲取簽名密鑰時(shí)發(fā)生錯誤,程序停止.“);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ā)生錯誤,程序停止.“);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ā)生錯誤,退出“);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ā)生錯誤,退出“);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ā)生錯誤,退出“);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ā)生錯誤,退出.“);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ā)生錯誤,退出.“);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ā)生錯誤,退出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)出出錯.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í)出錯,退出“);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)算出錯,退出“);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(”錯誤:簽名是錯誤的n“);

      m_state_veri+=”錯誤:簽名是錯誤的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ù)字簽名解析5篇word格式文檔
      下載非對稱加密及數(shù)字簽名解析5篇.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)范文推薦

        非對稱生存--非對稱財(cái)富[大全]

        非對稱生存--非對稱財(cái)富 (以下上市,如不做特別說明,均指股票上市,可以交易流通) “引用所謂在新西蘭滑雪的基金經(jīng)理的那句話來刺激” "如果不是簽證延誤的原因,我應(yīng)該在新西蘭......

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

        數(shù)字簽名及安全電子郵件 一、背景知識 使用個(gè)人證書,在電子郵件中至少有以下功能。 保密性:你可以使用收件人的數(shù)字證書對電子郵件進(jìn)行加密。這樣,只有收件人的私鑰才能解密......

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

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

        論非對稱趕超戰(zhàn)略

        論“非對稱”趕超戰(zhàn)略 牛興振*** 劉軍瑞*** 一、什么是“非對稱”趕超戰(zhàn)略 1.提出背景: 第一、我國與西方在一些科技領(lǐng)域差距越來越大,必須從“跟蹤、并行、......

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

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

        數(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ò),任何部門......

        數(shù)據(jù)加密技術(shù)(定稿)

         我們經(jīng)常需要一種措施來保護(hù)我們的數(shù)據(jù),防止被一些懷有不良用心的人所看到或者破壞。在信息時(shí)代,信息可以幫助團(tuán)體或個(gè)人,使他們受益,同樣,信息也可以用來對他們構(gòu)成威脅,造成破......

        MSP430常用加密總結(jié)

        MSP430常用加密總結(jié) 1> 為什么要加密,如何加密?當(dāng)您的產(chǎn)品推向市場的時(shí)候,您的競爭對手就開始盯上它了,如果您的產(chǎn)品硬件很容易被模仿,而且您使用的MSP430單片機(jī)沒有被加密的話,......