日本国产亚洲-日本国产一区-日本国产一区二区三区-日本韩国欧美一区-日本韩国欧美在线-日本韩国欧美在线观看

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

用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

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

本類教程下載

系統下載排行

主站蜘蛛池模板: 免费视频精品一区二区三区 | 成人免费淫片95视频观看网站 | 久久久久久久国产高清 | 欧美亚洲另类综合 | 国产精品嫩草影院奶水 | 久久中文亚洲国产 | 久久日本精品99久久久久 | 国产成人精品免费视频软件 | 国产福利午夜波多野结衣 | 中文字幕在线观看亚洲日韩 | 中文字幕在线一区二区三区 | 国产精品玖玖 | 美国人妖欧美性xxxxk妖 | 成人三级在线观看 | 狠狠干狠狠久久 | 999国产精品999久久久久久 | 国产精品福利视频主播真会玩 | 在线视频中文 | 夜夜爽8888 | 欧美日韩一区二区在线 | 亚洲www. | 天天影视色香欲综合网网站麻豆 | 日日躁夜夜躁狠狠天天 | 国产免费久久精品99久久 | 精品国产成人a区在线观看 精品国产成人高清在线 | 午夜精品久久久久久 | 久久综合九九 | 天天操天天舔天天干 | 性做久久久久 | 在线免费观看一区二区三区 | 欧美在线视 | 亚洲国产精品综合久久20 | 亚洲一级毛片在线播放 | 亚洲经典在线中文字幕 | 99久久精品免费看国产情侣 | 午夜影院在线 | 亚洲欧美在线观看播放 | 日韩另类视频 | 草草视频免费在线观看 | 免费高清在线视频色yeye | 做爰成人五级在线视频 |