六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

用JAVA做數字簽名

[摘要]數字簽名常被用來校驗軟件及軟件制造者,以保證軟件代碼沒有被任何方式玷污。 ---- 或者通俗地講,使用數字簽名可以確保軟件的“清潔”和“正宗”,即軟件從其制造者或出版商處直到最終用戶手中這段時間里未...
數字簽名常被用來校驗軟件及軟件制造者,以保證軟件代碼沒有被任何方式玷污。

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

---- 本文在對數字簽名的有關概念進行簡單回顧后,給出了用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


主站蜘蛛池模板: 王者天下第五季在线观看 | 亚洲精品另类有吗中文字幕 | 中文字幕高清在线天堂网 | 在线97视频| 亚洲aⅴ天堂 | 日日夜夜爽 | 永久国产 | 先锋影音国产精品 | 日本精品久久久久护士 | 亚洲午夜综合网 | 最近2019中文字幕大全视频一页 | 青青草国产免费久久久91 | 亚洲成在人 | 四虎新网址 | 正在播放麻豆 | 日本在线观看一区二区三区 | 亚洲成av人片在线观看 | 诱惑网综合| 亚洲综合导航 | 四虎影免看黄 | 天堂在线观看免费视频 | 亚洲成av人片在线观看无码 | 桃花岛高清在线观看 | 特级黄一级播放 | 一级做a爰片性色毛片视频图片 | 亚洲 另类 在线 欧美 制服 | 午夜影院免费体验 | 婷婷六月久久综合丁香乐透 | 中文字幕在线精品视频入口一区 | 天美传媒影视在线网址 | 亚洲国产高清在线 | 欧美视频在线免费看 | 亚洲产国偷v产偷v自拍色戒 | 日日噜噜夜夜狠狠久久aⅴ 日日噜噜夜夜狠狠扒开双腿 | 亚洲 欧美 自拍 卡通 综合 | 在线看污视频 | 五月激情丁香 | 色综合久久中文 | 天天色天天舔 | 欧美一区二区三区四区五区六区 | 在线国产91 |