亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

用JAVA做數字簽名

2019-11-18 13:27:58
字體:
來源:轉載
供稿:網友

  數字簽名常被用來校驗軟件及軟件制造者,以保證軟件代碼沒有被任何方式
  
  玷污。
  
  或者通俗地講,使用數字簽名可以確保軟件的“清潔”和“正宗”,即軟件
  
  從其制造者或出版商處直到最終用戶手中這段時間里未被他人篡改過。
  
  本文在對數字簽名的有關概念進行簡單回顧后,給出了用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 文件上。
  
  import java.awt.*;
  
  import java.io.*;
  
  import java.lang.*;
  
  import java.applet.*;
  
  public class MyApp extends Applet {
  
  DataOutputStream out_file;
  
  public void paint(Graphics g) {
  
  try {
  
  String YourName = System.get  
  out_file = new DataOutputStream(new FileOutputStream("Test.Txt"));
  
  out_file.writeChars("Your Name: "+YourName+"/n");
  
  out_file.close();
  
  g.drawString("Your Name has been written to file ", 20, 20);
  
  }
  
  catch (IOException e) {
  
  g.drawString("File i/o error", 12, 12);
  
  }
  
  catch (SecurityException se) {
  
  g.drawString("You can NOT write to disk or get User Name.", 12, 12);
  
  }
  
  }
  
  }
  
  // End of MyApp.java
  
  將 MyApp.java 編譯為 MyApp.class 后,用下面的 MyApp.Html 送往瀏覽器
  
  (命令為 appletviewer MyApp.html)。
   用JAVA做數字簽名
  /* End of MyApp.html */
  
  我們發現瀏覽器上顯示的是“You can NOT write to disk or get User Name”。
  
  這是因為獲取用戶名和寫本地硬盤均是系統安全特性所禁止的。
  
  下面我們創建一個數字簽名,以便該程序的使用者無須變更瀏覽器的安全檢查
  
  特性就能完成程序功能(即:讀用戶名,寫入文件)。
  
  第一步:創建一個實體,并將之設為“可信的”。
  
  javakey -cs Kompass true
  
  此處的實體是指簽字者(個人、公司或組織),這里假定為“Kompass”。參
  
  數“-cs”告訴 javakey創建一個簽字者并將之放入數據庫中(不帶參數運行javakey
  
   
  
  將得到具體幫助信息)。可選參數“true”表示簽字者“Kompass”是“可信
  
  的”(缺省值是“不可信”)。
  
  第二步:生成密鑰對(公共密鑰和私有密鑰)并輸出至文件(可選)。
  
  javakey -gk Kompass DSA 512 Kompass_pub Kompass_priv
  
  其中“DSA”是加密算法的名字,“512”是密鑰的長度,“Kompass_pub”、
  
  “Kompass_priv”分別是兩個密鑰輸出文件的名字。
  
  第三步:生成一個許可證(certificate)。
  
  javakey -gc cert_directive_Kompass
  
  這里的許可證即為可以交給接收方的數字簽名。
  
  上面的參數“cert_directive_Kompass”并不是輸出文件名,而是一個缺省
  
  參數配置文件名。通俗地講,它象是一個“.ini”文件,javakey 根據該文件的
  
  內容決定如何生成一個許可證。因此,簽字者在執行本步驟之前必須用文本編輯
  
  器先生成這個配置文件(學名叫指示文件--directive file)。
  
  以下給出文件 cert_directive_Kompass 的內容:
  
  issuer.name=Kompass
  
  issuer.cert=1
  
  subject.name=Kompass
  
  subject.real.name=Kompass
  
  subject.org.unit=JavaSoft
  
  subject.org=Sun MicroSystems
  
  subject.country=US
  
  start.date=31 May 1999
  
  end.date=30 May 2012
  
  serial.number=1001
  
  out.file=Kompass.key
  
  /* End of cert_directive_Kompass */
  
  從上面最后一行可以看出,輸出文件的名字被定義為“Kompass.key”,即:
  
  數字簽名“Kompass.key”連同簽字后的文件將一同被發給接收者。
  
  上述文件包括的其它信息主要有:發行者信息(issuer)、主題信息
  
 ?。╯ubject)、許可證信息(有效期限及序列號)等。
  
  第四步:創建存檔文件( jar 文件)。
  
  jar cf signMyApp.jar MyApp.class MyApp.html
  
  這里需要說明的是,jar是 Sun提供的另一個命令行工具,用于生成和維護
  
  存檔文件( .jar 文件)。 jar是一個打包工具,它可將JAVA小程序連同有關的
  
  聲音、圖像、動畫等文件一起打包成一個文件以便于JAVA產品

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
一个色综合导航| 亚洲欧洲日产国码av系列天堂| 亚洲性线免费观看视频成熟| 深夜福利一区二区| 久久久久久一区二区三区| 日本一本a高清免费不卡| 亚洲一区二区自拍| 91视频88av| 欧美大片免费观看在线观看网站推荐| 久久综合亚洲社区| 亚洲男人第一av网站| 日韩在线视频线视频免费网站| 黑人与娇小精品av专区| 国产成人高潮免费观看精品| 亚洲社区在线观看| 97精品视频在线播放| 亚洲图片制服诱惑| 国产精品久久97| 欧美激情精品久久久久久久变态| 欧美日韩精品在线视频| 久久久免费精品视频| 亚洲xxx视频| 在线播放国产一区二区三区| 午夜精品久久久久久久99热浪潮| 国产欧美日韩丝袜精品一区| 日韩免费在线视频| 久久久电影免费观看完整版| 97在线视频观看| 欧美激情一区二区久久久| 日本不卡高字幕在线2019| 久久免费观看视频| 亚洲欧美国产va在线影院| 日本成人精品在线| 热99在线视频| 人人澡人人澡人人看欧美| 最新69国产成人精品视频免费| 色哟哟入口国产精品| 精品国产依人香蕉在线精品| 精品久久久久久久中文字幕| 亚洲天堂av综合网| 日本精品久久久| 性夜试看影院91社区| 国产欧美一区二区白浆黑人| 欧美日韩性视频| 国产精品第三页| 精品成人乱色一区二区| 26uuu另类亚洲欧美日本一| 中文字幕自拍vr一区二区三区| 欧美在线免费看| 草民午夜欧美限制a级福利片| 国产综合在线观看视频| 日本久久久久亚洲中字幕| 永久免费毛片在线播放不卡| 在线播放精品一区二区三区| 欧美资源在线观看| 97久久精品国产| 久久久精品欧美| 欧美一级视频在线观看| 欧美性xxxx极品hd满灌| 欧美精品在线播放| 国产精品网红直播| 欧美电影免费观看| 韩国三级电影久久久久久| 亚洲美腿欧美激情另类| 九色91av视频| 精品福利视频导航| 一区二区三区www| 成人国产精品免费视频| 欧美在线视频a| 国产日本欧美一区二区三区| 亚洲日本欧美中文幕| 3344国产精品免费看| 欧美有码在线观看视频| 97香蕉超级碰碰久久免费的优势| 国产丝袜高跟一区| 狠狠躁夜夜躁久久躁别揉| 久久的精品视频| 中文字幕久热精品视频在线| 久久夜色精品国产欧美乱| 日韩欧美一区视频| 疯狂做受xxxx欧美肥白少妇| 国产精品久久在线观看| 97国产在线观看| 超碰精品一区二区三区乱码| 午夜精品福利电影| 精品久久久久久久中文字幕| 国产一区二区三区毛片| 欧美天堂在线观看| 久久人人看视频| 国产精品久久久久久久天堂| 欧美午夜精品久久久久久浪潮| 久久精品国产69国产精品亚洲| 国产成人91久久精品| 美女国内精品自产拍在线播放| 日韩性生活视频| 日韩福利视频在线观看| 国产欧美日韩最新| 国产在线观看精品| 97视频在线观看免费| 色综合久久久久久中文网| 国产精品7m视频| 国产69精品99久久久久久宅男| 亚洲网在线观看| 欧美黄网免费在线观看| 亚洲精品v欧美精品v日韩精品| 精品久久久久久国产| 亚洲精品视频播放| 久久手机免费视频| 91精品国产91久久久久久不卡| 91亚洲精品一区| 欧美激情手机在线视频| 亚洲欧洲一区二区三区在线观看| 日韩一区二区精品视频| 国产精品三级美女白浆呻吟| 久久99久久亚洲国产| 69久久夜色精品国产7777| 日韩av一区二区在线| 中文字幕亚洲第一| 亚洲精品久久久久国产| 日韩欧美黄色动漫| 91久久在线视频| 久久久久久久国产精品| 亚洲 日韩 国产第一| 欧美xxxx做受欧美| 蜜月aⅴ免费一区二区三区| 亚洲男人的天堂在线播放| 国产精品国产福利国产秒拍| 亚洲最新av在线网站| 国产v综合v亚洲欧美久久| 性色av一区二区咪爱| 亚洲aⅴ日韩av电影在线观看| 久久久久久久国产精品视频| 2019最新中文字幕| 国产日产欧美a一级在线| 成人欧美在线观看| 中文字幕亚洲一区在线观看| 国产精品视频精品视频| 日本精品视频在线| 日韩不卡中文字幕| 黑人巨大精品欧美一区免费视频| 69久久夜色精品国产7777| 亚洲天堂视频在线观看| 欧洲永久精品大片ww免费漫画| 日本19禁啪啪免费观看www| 亚洲国产日韩欧美综合久久| 欧美国产日韩精品| 尤物精品国产第一福利三区| 亚洲午夜性刺激影院| 亚洲视频电影图片偷拍一区| 色悠悠久久88| 国产不卡av在线免费观看| 欧美黑人狂野猛交老妇| 久久久久国产精品免费网站| 国产香蕉精品视频一区二区三区| 久久成人精品一区二区三区| 欧美贵妇videos办公室| 亚洲乱码av中文一区二区| 国产+人+亚洲| 亚洲一区二区三区成人在线视频精品| 成人黄色大片在线免费观看| 亚洲成人久久久久| 欧美xxxx18国产| 国产精品自拍视频| 91色精品视频在线|