国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

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

論Java加密技術與Windows的結合

2019-11-18 12:10:50
字體:
供稿:網(wǎng)友

  論java加密技術與Windows的結合
  
  作者:獨行客
  
    公共鑰匙加密技術需要一個空間來存儲數(shù)字證書和私鑰。通過將鑰匙和證書存儲到一個文件中(稱為keystore),Java Security Architecture實現(xiàn)了獨立于平臺的加密技術。
  
    Microsoft Windows把鑰匙和證書存儲到Windows注冊表和文件系統(tǒng)中。這就是說,在Windows系統(tǒng)上運行安全的Java程序的用戶必須在Java和Microsoft的鑰匙和證書庫之間輸入和輸出鑰匙和證書。好消息是,你可以“哄騙”Java應用程序通過Microsoft本地函數(shù)來運用Microsoft的證書和鑰匙庫。
  
    通過將你的Java應用程序同Windows 鑰匙/證書庫結合起來,你雖然犧牲了平臺獨立姓,但你得到了四個好處:減少了治理和支持的成本、更方便用戶使用、更好的證書撤消校驗、以及更好的鑰匙和證書治理工具。
  
    一個Java程序必須通過四個不同的類實現(xiàn)與Windows加密術的集成: · TrustManager PRovider:用這個類來實現(xiàn)與Windows證書庫的集成并實現(xiàn)安全策略。
  
    · KeyManager Provider:用這個類來實現(xiàn)與Windows私鑰庫的集成。
  
    · RSA Signature Provider:數(shù)字簽名需要訪問私鑰庫。假如Java程序不能讀取私鑰(比如,假如私鑰存在一個加密了的智能卡上了),那么簽名操作就必須在Windows中進行。
  
    · RSA Cipher Provider:解密RSA加密的數(shù)據(jù)(如加密套接字協(xié)議層(SSL)對稱的鑰匙)需要訪問私鑰庫。假如Java程序不能讀取私鑰(比如,假如私鑰存在一個加密了的智能卡上了),那么RSA解密操作就必須在Windows中進行。
  
    我將講述與Windows平臺集成的TrustManager Provider、KeyManager Provider、RSA Signature Provider和RSA Cipher Provider的用法。TrustManager和KeyManager可以讓你構建可運行的Windows支持的Java Secure Socket Extension(JSSE)應用程序。JSSE范例程序——EchoServer和EchoClient可以證實這一點。你不能覆蓋JSSE的內(nèi)置的RSA Cipher Provider,所以,只有當私鑰可以從Windows鑰匙庫中輸出時,JSSE應用程序才可以運行。
  
    假如你在編寫一個運用RSA簽名或RSA加密的Java應用程序,那么你可以運用Windows支持的RSA Signature Provider和Cipher Provider。這不需要從Windows鑰匙庫中輸出私鑰。對于其它三個提供者(provider),你可以單獨使用每一個。
  
    該代碼是用 beta版JDK 1.4.0-rc開發(fā)的,很穩(wěn)定。不過,我們打算將該代碼作為一個框架,進行進一步的開發(fā)。在將該代碼用于生產(chǎn)環(huán)境前,你應該改進異常處理,確信在本地代碼中沒有內(nèi)存泄露,并使密鑰的暴露降低到最小。為了測試代碼,你需要一個RSA數(shù)字證書。你可以從VeriSign網(wǎng)站www.verisign.com/client/enrollment得到一個臨時證書,有效期是60天。具體操作請遵循該站點上的指南。不要選定標為“Protect your Private Key”的框。因為沒有選定這個框,你的私鑰就可以輸出。
  
    下面的代碼初試化了四個提供者:
  
  
  
  MSTrustMgrProvider.install();
  
  MSKeyMgrProvider.install();
  
  MSRSASignProvider.install();
  
  MSRSACipherProvider.install();
  
  kmf = KeyManagerFactory
  
  .getInstance("MSKMF");
  
  tmf = TrustManagerFactory.
  
  getInstance("MSTMF");
  
  Cipher cipher =
  
  Cipher.getInstance(
  
  "RSA/ECB/PKCS1Padding");
  
  Signature rsa =
  
  Signature.getInstance(
  
  "SHA1withRSA");
  
  
  
    所有的四個提供者都調(diào)用了10個本地的Microsoft函數(shù):
  
    · MSgetCACerts()從Microsoft證書庫返回一列認證授權中心(Certificate Authority (CA))簽發(fā)的證書。
  
    · 假如一個證書沒有被撤消,MSVerifyCertRevocation()返回true。
  
    · MSgetPrivateKey()為一個特定的別名(alias )返回私鑰。(這里所說的一個別名就是帶有一個RSA私鑰和證書的一個身份。)鑰匙從Microsoft鑰匙庫中輸出。
  
    · MSgetCert()為一個特定的別名從Microsoft證書庫中返回一個證書。
  
    · MSgetAliases()返回一組別名(帶有私鑰的一個身份的名字)。Microsoft鑰匙庫中的每個私鑰都有一個別名。
  
    · MSrsaSignHash()返回哈希數(shù)據(jù)(hashed data)的RSA簽名。
  
    · MSrsaDecrypt()用RSA算法來解密一個先前加密了的數(shù)據(jù)塊。
  
    · MSrsaEncrypt()用Microsoft RSA provider來加密一個數(shù)據(jù)塊。
  
    · MSrsaGetKeysize()返回Microsoft鑰匙庫中一個鑰匙的RSA鑰匙大小。
  
    · MSgetCRL()將一個證書撤消清單(Certificate Revocation List(CRL))下載到Microsoft Internet緩存中。
  
    一個約500行的用C語言代碼編寫的源文件mscryptofunctions.c中包含了所有這些函數(shù)。該代碼可以在Windows 98/NT4/2000/XP上運行。
  
  下一頁
  
  論Java加密技術與Windows的結合
  
  .nava{FONT-SIZE:9pt}
  
  function sendemail(){
  
  OpenWindow = window.open('http://other.chinabyte.com/chinabyte/qin/sendemail.shtm?url=http%3A%2F%2Fwww.yesky.com/20030429/1666178.sHtml&title=論Java加密技術與Windows的結合&channel=9','emailwin','toolbar=no,location=no,scrollbars=no,menubar=no,width=462,height=450')
  
  }
  
  Untitled Document
  
  商務應用
  
  E企業(yè)
  
  數(shù)字電子
  
  E時代
  
  您現(xiàn)在的位置是:
  
  開發(fā)者網(wǎng)絡
  
  程序方舟
  
  Java專欄
  
  T O P 排 行
  
  FreeHand MX全新體驗
  
  注冊表知識群集
  
  Delphi經(jīng)典編程100例
  
  php編程實錄
  
  網(wǎng) 校 熱 門
  
  論Java加密技術與Windows的結合
  
  2003-05-08·
  
  ·獨行客··天極論壇
  
  上一頁
  
  下一頁
  
  公共鑰匙加密算法
  
    公共鑰匙加密有兩個目的:加密和數(shù)字簽名。公共鑰匙加密運用一個包含兩部分的鑰匙(或一對鑰匙):一個私鑰和一個公鑰。公鑰帶有開始和終止日期、一個序號、一個身份(稱為Subject Distinguished Name)、和一個CA的簽名(見列表1)。RSA是最常用的公共鑰匙加密算法。
  
  
  
  公共鑰匙加密運用一個公鑰和一個私鑰。一個數(shù)字證書(如下所示)包含公鑰、開始和結束日期、一個序號、一個身份和一個證書授權中心(CA)的簽名。
  
  Serial number:
  
  6822 3C33 7945 3AC8 F8C5 398B 7469 94E1
  
  Signature algorithm: md5RSA
  
  Issuer: CN = VeriSign Class 1 CA Individual
  
  Subscriber-Persona Not Validated,
  
  OU = www.verisign.com/repository/RPA Incorp.
  
  By Ref.,LIAB.LTD(c)98,
  
  OU = VeriSign Trust Network, O = VeriSign, Inc.
  
  Valid from: Wednesday, May 30, 2001 7:00:00 PM
  
  Valid to: Monday, July 30, 2001 6:59:59 PM
  
  Subject: E = boyter@txdirect.net,
  
  CN = Brian Boyter,
  
  OU = Digital ID Class 1
  
  OU = Persona Not Validated,
  
  OU = www.verisign.com/repository/RPA Incorp.
  
  by ref.,LIAB.LTD(c)98,
  
  OU = VeriSign Trust Network, O = VeriSign, Inc.
  
  Public key: 3081 8902 8181 00BA B459 0F39 156E
  
  C69E C238 BFD0 401D DBB9 D207 DFA4 5DBD 09F3
  
  5CE6 B5E6 C357 88DD 808B 0699 5F68 A2A4 6A8A
  
  3B21 6D3D D0A1 1E5F DAB1 FB8E F835 F84F 849B
  
  29A4 6943 8D59 0669 7C81 1D00 03B7 1A02 4E7A
  
  8596 11BD 7CC4 07A3 D7E5 9FF6 5684 B853 04F0
  
  0938 A11E 5218 F9AB F034 070D C8C4 6652 C19B
  
  4C57 E435 EFDC 85D4 B269 07B7 0102 0301 0001
  
  Basic constraints: Subject Type=End Entity,
  
  Path Length Constraint=None
  
  Certificate policy:
  
  Policy Qualifier Id=CPS Qualifier:
  
  https://www.verisign.com/CPS
  
  Policy Qualifier Info:
  
  Organization=VeriSign, Inc.,
  
  Notice Number=1
  
  CRL Distribution Point Distribution Point Name:
  
  Full Name:
  
  URL=http://crl.verisign.com/class1.crl
  
  Thumbprint algorithm: sha1
  
  Thumbprint: 74A8 9F07 43AA 8FFC C4D5 AB09 3773 3AFF F7E7 DFFC
  
  
  
    公共鑰匙加密中的加密是用公鑰來完成的,解密是用私鑰完成的。公共鑰匙加密對于大量的加密來說運算很復雜,但它卻被廣泛用來分配密鑰。密鑰,或?qū)ΨQ加密算法,如DES和RC4,通常用于大量的加密,但是密鑰

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 奎屯市| 盐池县| 长乐市| 密山市| 莱阳市| 双牌县| 高陵县| 洪雅县| 肥乡县| 济南市| 丹寨县| 金川县| 财经| 林口县| 阳原县| 沽源县| 藁城市| 榆中县| 海口市| 宁强县| 翁牛特旗| 观塘区| 德兴市| 亚东县| 福安市| 永登县| 南木林县| 东海县| 广元市| 名山县| 巴南区| 南溪县| 清流县| 宁乡县| 四子王旗| 祁连县| 柳河县| 南丰县| 城固县| 沾益县| 喜德县|