• <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

        當(dāng)前位置:雨林木風(fēng)下載站 > 技術(shù)開發(fā)教程 > 詳細(xì)頁面

        用JAVA做數(shù)字簽名

        用JAVA做數(shù)字簽名

        更新時(shí)間:2022-04-29 文章作者:未知 信息來源:網(wǎng)絡(luò) 閱讀次數(shù):

        數(shù)字簽名常被用來校驗(yàn)軟件及軟件制造者,以保證軟件代碼沒有被任何方式玷污。

        ---- 或者通俗地講,使用數(shù)字簽名可以確保軟件的“清潔”和“正宗”,即軟件從其制造者或出版商處直到最終用戶手中這段時(shí)間里未被他人篡改過。

        ---- 本文在對(duì)數(shù)字簽名的有關(guān)概念進(jìn)行簡(jiǎn)單回顧后,給出了用JAVA來創(chuàng)建和使用數(shù)字簽名的具體方法。

        一、數(shù)字簽名及其功能
        ---- 數(shù)字簽名算法(DSA) 是“公共密鑰加密算法”中的一種,因此讓我們從 “私有密鑰/公共密鑰”開始進(jìn)行簡(jiǎn)單回顧。

        ---- 1. 私有密鑰加密及其局限性

        ---- 私有密鑰加密系統(tǒng)使用唯一的密鑰(即私有密鑰)進(jìn)行加密和解密。該密鑰必須為發(fā)送者和接收者所共享。即,若甲要向乙發(fā)一個(gè)加密郵件,甲需用一密鑰將信息加密;乙收到郵件后,須用同樣的密鑰將信息解密。

        ---- 該方法顯然有非常嚴(yán)重的缺點(diǎn)。例如,接收雙方必須擁有同樣的密鑰,這要求一定要有一種安全的協(xié)議來保證密鑰傳送的可靠;第二,有緊急的加密消息需要發(fā)送時(shí),可能因接收方?jīng)]有密鑰而不能完成傳送;第三,若要將消息發(fā)給許多不同的團(tuán)體,就需要與各個(gè)團(tuán)體對(duì)應(yīng),維護(hù)許多不同的密鑰。

        ---- 為克服私有密鑰加密系統(tǒng)的這些弱點(diǎn),人們引進(jìn)了公共密鑰加密系統(tǒng)。

        ---- 2. 公共密鑰加密

        ---- 公共密鑰加密不需要一條信息的發(fā)送者和接收者知道對(duì)方的密鑰,就能訪問該加密信息。

        ---- 公共密鑰加密系統(tǒng)使用密鑰對(duì)(公共密鑰和私有密鑰)來加密和解密信息。其加密思想也非常簡(jiǎn)單:用公共密鑰加密的信息只能用與之對(duì)應(yīng)的私有密鑰解開;而用私有密鑰加密的信息,任何擁有與之對(duì)應(yīng)的公共密鑰的人均可解開。因此,私有密鑰總為個(gè)人保管而無須外傳,公共密鑰則可授權(quán)給他人使用而不會(huì)破壞安全性,公共密鑰和私有密鑰之間永遠(yuǎn)存在著一對(duì)一的關(guān)系。具體地講即:

        ---- 第一,若信息是用接收方的公共密鑰加密的,則只有應(yīng)該收到此消息的人才能對(duì)之解密(即只有擁有與該公共密鑰對(duì)應(yīng)的私有密鑰的人才可解密)。例如,甲要向乙發(fā)一個(gè)加密郵件,甲必須用乙的公共密鑰加密信息后再傳給乙。

        ---- 第二,若信息是用發(fā)送方的私有密鑰加密的,則任何擁有發(fā)送方公共密鑰的接收者都可以對(duì)信息進(jìn)行解密,從而確定該信息確實(shí)是來自該發(fā)送者,并且信息內(nèi)容未遭到任何無意或惡意的破壞。

        ---- 上述第二點(diǎn)正是數(shù)字簽名的含義。

        ---- 3. 數(shù)字簽名的功能

        ---- 一個(gè)數(shù)字簽名是一個(gè)定長的二進(jìn)制數(shù)字流,其內(nèi)容附著于被簽名的數(shù)據(jù)之上。它可以和任何種類的數(shù)字?jǐn)?shù)據(jù)一起使用,除最普通的代碼軟件外。還可用在口令、電子郵件及電子文檔中。數(shù)字簽名的主要功能為:防止原始文檔被污染或變更;防止別有用心者使用他人名字散布欺騙性消息;以及,提供誰是文件原作者的證據(jù),等等。

        二、用JAVA創(chuàng)建及使用數(shù)字簽名
        ---- 除了上面提到的功能外,用JAVA做數(shù)字簽名還有更現(xiàn)實(shí)的意義。最常見的是:應(yīng)用數(shù)字簽名可以突破瀏覽器在安全性方面的某些限制。例如,你的瀏覽器一般會(huì)拒絕網(wǎng)上的JAVA程序讀寫你本地硬盤的文件或獲取你的本地信息(如你的用戶名稱等),哪怕你確認(rèn)該JAVA程序是“可靠的”(其實(shí)你不可能完全確認(rèn)來自網(wǎng)上的某個(gè)程序真的是“可靠的”)。若你確要運(yùn)行該JAVA程序,你必須關(guān)閉瀏覽器的安全檢查功能,但這無異于將本地系統(tǒng)置為“不設(shè)防的城池”。使用數(shù)字簽名可完美地解決這個(gè)問題:當(dāng)瀏覽器“感覺”到你使用的是簽名后的JAVA小程序后,它會(huì)自動(dòng)搜索與之匹配的數(shù)字簽名并進(jìn)行校驗(yàn),若成功則瀏覽器認(rèn)定該JAVA小程序是“值得信任的”,于是放行。這樣,既保證了安全性,又可以讓真正“可信的”的 JAVA程序擁有許多特權(quán)(見下述JAVA程序)。

        ---- 在 JDK1.1 中,與數(shù)字簽名有關(guān)的工作是由工具程序 javakey 來完成的。 javakey 是 Sun 提供的一個(gè)命令行工具,用來為存檔文件(jar 文件)生成數(shù)字簽名并管理密鑰數(shù)據(jù)庫。

        ---- 下面我們將通過一個(gè)具體例子來看一看創(chuàng)建和使用數(shù)字簽名的步驟,有關(guān)概念和解釋將在例子中給出。

        ---- 1. Java 程序及數(shù)字簽名的創(chuàng)建 (加密方或簽字者應(yīng)執(zhí)行的步驟) 下面的JAVA小程序非常簡(jiǎn)單,它的主要功能為:獲取 Win95/98系統(tǒng)當(dāng)前登錄用戶的名稱字符串,然后將之寫入本地硬盤當(dāng)前目錄的 Test.Txt 文件上。

          ... ...

        ---- 將 MyApp.java 編譯為 MyApp.class 后,用下面的 MyApp.html 送往瀏覽器(命令為 appletviewer MyApp.html)。

          ... ...

        ---- 我們發(fā)現(xiàn)瀏覽器上顯示的是“You can NOT write to disk or get User Name”。這是因?yàn)楂@取用戶名和寫本地硬盤均是系統(tǒng)安全特性所禁止的。

        ---- 下面我們創(chuàng)建一個(gè)數(shù)字簽名,以便該程序的使用者無須變更瀏覽器的安全檢查特性就能完成程序功能(即:讀用戶名,寫入文件)。

        ---- 第一步:創(chuàng)建一個(gè)實(shí)體,并將之設(shè)為“可信的”。

        ... ...

        ---- 第二步:生成密鑰對(duì)(公共密鑰和私有密鑰)并輸出至文件(可選)。

        ... ...

        ---- 第三步:生成一個(gè)許可證(certificate)。

        ... ...

        ---- 第四步:創(chuàng)建存檔文件( jar 文件)。

        ... ...

        ---- 第五步:對(duì)存檔文件進(jìn)行簽名。

        ... ...

        ---- 第六步:更改文件名。

        ... ...

        ---- 2. 數(shù)字簽名的使用 (解密方或使用者應(yīng)執(zhí)行的步驟)

        ---- 第一步:得到許可證(即數(shù)字簽名 -- Kompass.key)和簽名后的文件。

        ---- 第二步:創(chuàng)建簽名者實(shí)體,并將之設(shè)為“可信的”。

        javakey -c Kompass true

        第三步:將許可證倒入數(shù)據(jù)庫。

        javakey -ic Kompass Kompass.key

        最后一步:運(yùn)行JAVA程序。

        appletviewer signMyApp.html

        我們注意到這里的“.html”
        不是上面給出的“MyApp.html”。其實(shí)這二者
        的差別很小,“signMyApp.html”
        只是多了一個(gè)參數(shù):

        archive="signMyApp.jar"

        它告訴瀏覽器所有有用的文件
        (這里的 MyApp.class)均在存檔文件中而不
        在其它地方。


        ... ...


        ---- 現(xiàn)在,我們終于看到了期待已久的結(jié)果:瀏覽器打出了“Your Name has been written to file < Test.Txt >”;而文件“Test.Txt”確實(shí)被創(chuàng)建,并且其內(nèi)容正是用戶登錄 Win95/98 時(shí)的名字:

        Y o u r N a m e : M a w e n q i a n

        溫馨提示:喜歡本站的話,請(qǐng)收藏一下本站!

        本類教程下載

        系統(tǒng)下載排行

        主站蜘蛛池模板: 一级做a爰片性色毛片免费网站| 亚洲免费观看网站| 亚洲AV日韩综合一区| 免费看h片的网站| 亚洲精品不卡视频| 精品女同一区二区三区免费站| 久热综合在线亚洲精品| 亚洲免费在线视频| 91情国产l精品国产亚洲区| 日本高清在线免费| 亚洲 欧洲 自拍 另类 校园| 毛片免费vip会员在线看| 亚洲日本在线电影| www亚洲精品少妇裸乳一区二区| 精品国产亚洲一区二区三区在线观看 | 青娱分类视频精品免费2| 亚洲av无码一区二区三区观看| 亚洲电影免费观看| 亚洲黄页网在线观看| 免费久久精品国产片香蕉| 久久成人18免费网站 | 免费人成在线观看视频播放| 人妖系列免费网站观看| 亚洲精品狼友在线播放| 好紧我太爽了视频免费国产| 666精品国产精品亚洲| 成人无遮挡裸免费视频在线观看| 亚洲爆乳无码专区www| 久久亚洲2019中文字幕| 69av免费观看| 国产亚洲女在线线精品| 亚洲一区无码中文字幕| 青青青国产在线观看免费网站 | 亚洲第一永久在线观看| 国产在线播放免费| a毛片免费观看完整| 久久久精品免费视频| 33333在线亚洲| 亚洲偷自拍拍综合网| 91免费人成网站在线观看18| 国产AV无码专区亚洲AV蜜芽|