麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發(fā)設計 > 正文

用JCE共享Java密鑰

2019-11-18 13:28:43
字體:
供稿:網(wǎng)友

  JCE(java密碼擴展)為應用程序采用Java加密和數(shù)字簽名提供了一種統(tǒng)一和一致的方式。加密類(在java.security和javax.crypto包中)為實施加密和數(shù)字簽名更實現(xiàn)了一種相當方便的操作方式。這些類所具有的方法還支持保存和獲取密鑰。
  本文采用一組測試類演示一種共享密鑰信息的方法。重點在于如何在非Java環(huán)境下共享密鑰信息。即便在Java環(huán)境內(nèi),只要出于加密目的而創(chuàng)建了密鑰你多半就希望繼續(xù)使用同樣的密鑰,從而讓加密信息的使用者可以對這些信息解密。
  JDK 1.4針對常用加密算法而包含了必要的加密供給者。在1.4版之前安裝JDK的細節(jié)請參看“Java加密擴展基礎。”
  格式選擇
  為了同其他平臺或者編程環(huán)境共享密鑰信息,你首先必須決定交換密鑰的標準。Java實現(xiàn)了若干種交換標準。ASN.1編碼就是處理密鑰的Java類所采用的默認標準規(guī)范。Java Key接口(java.security.Key)規(guī)定了獲取密鑰版本的方法(getEncoded())。其格式可以文件的形式寫入磁盤,以后還可以再被Java讀回。密鑰數(shù)據(jù)的另一種格式就是文本。具體取決于所采用的算法,而這類格式已經(jīng)被定制,因為各種算法的需求不同。在采用RSA的情況下,密鑰可以保存密鑰系數(shù)和指數(shù)的方式得以存儲。
  就一般項目而言,這種保存密鑰的方法是最為適合的,因為密鑰以普通文本表示,RSA加密總能通過合適的編碼創(chuàng)建密鑰。因為這種文本表示法不需要讀取ASN.1之類的特定格式,所以這也是一種輕度、簡便的操作方式。而且任何能生成RSA風格密鑰的編程語言都能讀取系數(shù)和指數(shù)來創(chuàng)建必要的密鑰。
  創(chuàng)建和保存密鑰
  用Java生成密鑰并不復雜。首先用你所希望的算法和參數(shù)初始化KeyPairGenerator,這樣就可以產(chǎn)生一個512位的密鑰??紤]到最佳的安全和速度因素,建議你產(chǎn)生2048位的密鑰,不過,對國際性應用程序而言這樣作可能會在部署中引發(fā)一些政治性的出口問題。通過KeyPairGenerator即可獲得KeyPair對象,然后從這里出發(fā)又可以獲得PRivateKey和 PublicKey對象并把它們轉(zhuǎn)換各自的RSA版本。
  為了保存密鑰,我們可以采用公鑰和私鑰對象上的方法獲取密鑰的系數(shù)和指數(shù)。系數(shù)和指數(shù)以BigIntegers的形式返回,結果可能是16進制格式的輸出字符串。采用密鑰的16進制版本即可采用文本文件的形式保存密鑰供今后采用。在程序清單A中,GenerateRSAKeys類負責執(zhí)行以上這些步驟同時把密鑰寫入文件。以上演示中該類同時寫入了ASN.1編碼(一種二進制文件)和文本(或者16進制版本)。
  讀取密鑰
  既然密鑰已經(jīng)保存在磁盤上,那么我們就必須編寫一些代碼從磁盤文件中讀取密鑰數(shù)據(jù)并把這些數(shù)據(jù)轉(zhuǎn)換為Key對象。 Key對象是實現(xiàn)加密、解密、數(shù)字簽名和簽名檢驗函數(shù)所必需的。 程序清單B顯示一個簡單類,它獲得一個文件名參數(shù)進行初始化操作,這個文件包含了必要的16進制系數(shù)和指數(shù)信息。該類并不關心密鑰是公有還是私有的。因為它只為其他用來創(chuàng)建正確PublicKey或 PrivateKey對象的類提供系數(shù)和指數(shù)的BigInteger 版本。
  密鑰再造
  在采用讀取密鑰類的情況下,程序現(xiàn)在即可初始化正確的密鑰,然后用密鑰執(zhí)行加密或數(shù)字簽名操作。以上示例采用了兩種類,第1種對文件進行數(shù)字簽名操作,第2種類獲得簽名和對應的密鑰檢驗給定文件的簽名。
  為了再造密鑰,我們必須采用系數(shù)和指數(shù)信息創(chuàng)建一個符合規(guī)范的對象。對私鑰來說就是采用RSAPrivateKeySpec,而對公鑰來說就是RSAPublicKeySpec。密鑰規(guī)范對象被提交給構造Key對象的 KeyFactory。你可以參看 程序清單C和 程序清單D這個示范性簽名和檢驗程序。為了創(chuàng)建簽名還的調(diào)用SignFile 程序,同時傳遞給它由創(chuàng)建程序所產(chǎn)生的私鑰和簽名文件。比方說,在命令行上鍵入 java SignFile private_raw.txt data.txt即可創(chuàng)建簽名文件 rawsignature.sig 和hexsignature.txt。為了檢查簽名的工作情況和公鑰是否正確讀取,可以用帶簽名文件的VerifySignature類(java VerifySignature public_raw.txt data.txt rawsignature.sig),其簽名文件則由SignFile類創(chuàng)建。
  文中提到的代碼可以從以下地址下載:
  GenerateRSAKeys.java
  RawRSAKey.java
  SignFile.java
  VerifySignature.java
  保存密鑰的其他方式
  以上談到的Java類演示了把RSA密鑰寫入磁盤然后讀取磁盤數(shù)據(jù)再造密鑰的方法。你可以通過Java安全類采用其他替代性的密鑰保存方法。比如你可以采用KeyStore以安全的密碼保護文件方式保存密鑰。當然,采用KeyStore并不能同其他應用程序共享密鑰除非它們也是用Java編寫的。另外還有一種共享密鑰數(shù)據(jù)的可能方式,這就是采用X509證書之類的標準編碼機制。有了Java安全和加密包所提供的類和接口,所有這些方法都令密鑰操作目的的實現(xiàn)成為可能。
  
  文章連接情況請點 ZDNET

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 久国产精品视频 | 在线成人免费观看www | 亚洲综合一区在线观看 | 欧美成人一区二区三区 | 亚洲网站免费观看 | 国产一区二区成人在线 | 蜜桃欧美性大片免费视频 | 亚洲极色 | 泰剧19禁啪啪无遮挡大尺度 | 香蕉国产在线视频 | 亚洲字幕av| 中文字幕在线视频日本 | 久久久久久久久久性 | 中文字幕www.| av免费在线播放网址 | 久久久久国| 羞羞草视频 | 国内精品久久久久久久影视红豆 | 免费国产wwwwwww网站 | 成人免费午夜视频 | 久久精品视频日本 | 99麻豆久久久国产精品免费 | 91美女啪啪 | 国产成人在线网站 | www久久综合 | 国内精品伊人久久久久网站 | 国产九色在线观看 | 久久伊人精品视频 | 国产91精品一区二区麻豆亚洲 | 日韩中文字幕一区二区三区 | 一级做受大片免费视频 | 激情亚洲一区二区三区 | 在线成人精品视频 | 成人免费看视频 | 久久精品av | 国产精品呻吟 | 国产人妖一区二区 | 中文字幕极速在线观看 | 黄色大片在线免费观看 | 午夜视频在线免费播放 | 国产欧美亚洲精品 |