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

        當前位置:雨林木風下載站 > 技術開發教程 > 詳細頁面

        用JAVA做數字簽名

        用JAVA做數字簽名

        更新時間:2022-04-29 文章作者:未知 信息來源:網絡 閱讀次數:

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

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

        ---- 本文在對數字簽名的有關概念進行簡單回顧后,給出了用JAVA來創建和使用數字簽名的具體方法。

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

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

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

        ---- 該方法顯然有非常嚴重的缺點。例如,接收雙方必須擁有同樣的密鑰,這要求一定要有一種安全的協議來保證密鑰傳送的可靠;第二,有緊急的加密消息需要發送時,可能因接收方沒有密鑰而不能完成傳送;第三,若要將消息發給許多不同的團體,就需要與各個團體對應,維護許多不同的密鑰。

        ---- 為克服私有密鑰加密系統的這些弱點,人們引進了公共密鑰加密系統。

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

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

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

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

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

        ---- 上述第二點正是數字簽名的含義。

        ---- 3. 數字簽名的功能

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

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

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

        ---- 下面我們將通過一個具體例子來看一看創建和使用數字簽名的步驟,有關概念和解釋將在例子中給出。

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

          ... ...

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

          ... ...

        ---- 我們發現瀏覽器上顯示的是“You can NOT write to disk or get User Name”。這是因為獲取用戶名和寫本地硬盤均是系統安全特性所禁止的。

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

        ---- 第一步:創建一個實體,并將之設為“可信的”。

        ... ...

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

        ... ...

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

        ... ...

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

        ... ...

        ---- 第五步:對存檔文件進行簽名。

        ... ...

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

        ... ...

        ---- 2. 數字簽名的使用 (解密方或使用者應執行的步驟)

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

        ---- 第二步:創建簽名者實體,并將之設為“可信的”。

        javakey -c Kompass true

        第三步:將許可證倒入數據庫。

        javakey -ic Kompass Kompass.key

        最后一步:運行JAVA程序。

        appletviewer signMyApp.html

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

        archive="signMyApp.jar"

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


        ... ...


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

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

        溫馨提示:喜歡本站的話,請收藏一下本站!

        本類教程下載

        系統下載排行

        主站蜘蛛池模板: 亚洲av无码专区国产不乱码| 国产2021精品视频免费播放| 日本免费人成视频播放| 亚洲影视自拍揄拍愉拍| 97碰公开在线观看免费视频| 亚洲综合视频在线观看| 国产成人yy免费视频| 亚洲欧洲日韩国产一区二区三区| 午夜免费1000部| 亚洲 欧洲 自拍 另类 校园| 免费无遮挡无码视频网站| 亚洲日本va一区二区三区| 国产精品无码一二区免费| 美女一级毛片免费观看| 亚洲一区二区三区在线视频| 国产日韩AV免费无码一区二区三区| 狠狠亚洲狠狠欧洲2019| 免费在线看黄的网站| 亚洲伊人色一综合网| 麻豆精品国产免费观看| xxxx日本在线播放免费不卡| 亚洲精品无码不卡在线播放HE| 一级毛片**不卡免费播| 亚洲人精品亚洲人成在线| 国产一级淫片免费播放电影| 国产精品1024在线永久免费| 国产人成亚洲第一网站在线播放| 最近中文字幕无吗免费高清| 免费人成视频在线观看免费| 精品国产亚洲一区二区三区| 国产免费的野战视频| 国产精品亚洲一区二区无码| 国产AⅤ无码专区亚洲AV| 亚洲一级免费毛片| 亚洲精品久久无码| 亚洲热线99精品视频| 久久久久久免费视频| 亚洲AV成人无码久久精品老人| 久久免费看黄a级毛片| 久久精品熟女亚洲av麻豆| 亚洲av永久无码制服河南实里|