亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 4363 | 回復(fù): 1
打印 上一主題 下一主題

Java加密擴展基礎(chǔ)——轉(zhuǎn) [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2002-07-13 08:48 |只看該作者 |倒序瀏覽

Java加密擴展基礎(chǔ)

作者: BUILDER.COM
Wednesday, July 3 2002 11:32 AM



Java加密擴展(JCE)現(xiàn)在已經(jīng)成為Java SDK 1.4的核心組成部分。JCE基本上是一組提供加密框架和實現(xiàn)、密鑰生成和協(xié)商以及消息認證代碼(MAC)算法的Java包。

  
不過你可得注意了,雖然JCE目前是Java SDK 1.4核心組成包,不過我們將演示如何用Java SDK 1.2 或者更高版本對其進行配置。此外,本文還要討論如何在動態(tài)安裝的情況下使用安全供應(yīng)者。最后我會演示創(chuàng)建密鑰和密碼的過程,以及如何實施基本的數(shù)據(jù)加密和解密。


--------------------------------------------------------------------------------

什么是安全供應(yīng)者?
安全供應(yīng)者就是承擔特定安全機制的實現(xiàn)。有些供應(yīng)者是完全免費的,而另一些供應(yīng)者則需要付費。提供安全供應(yīng)者的公司有IBM、Bouncy Castle和RSA等。今后我們將對Bouncy Castle的RSA實現(xiàn)做闡述。Sun 提供了如何實現(xiàn)你自己供應(yīng)者的細節(jié)。


--------------------------------------------------------------------------------

靜態(tài)安裝
在使用或安裝JCE之前,你必須首先從Sun的網(wǎng)站獲取相關(guān)的Java庫。JCE包含了Sun自產(chǎn)的安全供應(yīng)者SunJCE。為了在你的默認供應(yīng)者列表中靜態(tài)添加SunJCE,你需要編輯安全屬性文件;

<java-home>;\jre\lib\security\java.security (Win32)
<java-home>;/jre/lib/security/java.security (UNIX)
比方說,假如你在Windows計算機的C:\jdk1.3文件夾下面安裝了JDK,那么你需要編輯如下文件:

C:\jdk1.3\jre\lib\security\java.security
為了安裝SunJCE你還得在以上文件中添加以下代碼行:
security.provider.n=com.sun.crypto.provider.SunJCE

請用正確的供應(yīng)者替代以上代碼中的 n。

程序清單A 演示了如何查看安裝供應(yīng)者的信息。程序清單B所示的輸出結(jié)果顯示了供應(yīng)者的支持信息,比如可用算法等。


動態(tài)安裝
程序清單C 所示為運行時動態(tài)裝載供應(yīng)者的情況。必須指出,當你在調(diào)用Security.addProvider(…)的時候,供應(yīng)者對整個JVM可用。

如上所述,當你在安裝供應(yīng)者的時候,你必須提供一個數(shù)字表示其優(yōu)先級。在調(diào)用實現(xiàn)時, JVM會根據(jù)優(yōu)先級搜索整個安裝的安全供應(yīng)者并用找到的第1個供應(yīng)者實現(xiàn)請求的算法。你還可以通過在方法調(diào)用中包含其他參數(shù)的方法顯式地調(diào)用給定的供應(yīng)者,以后我們可以了解這一點。


論壇徽章:
0
2 [報告]
發(fā)表于 2002-07-13 08:49 |只看該作者

Java加密擴展基礎(chǔ)——轉(zhuǎn)

實現(xiàn)細節(jié)
  
JCE API由很多類和接口組成。它們具有若干種算法和安全特性。本文首先討論常用的對稱算法數(shù)據(jù)加密標準DES(Data Encryption Standard)。


產(chǎn)生密鑰
程序清單D 說明了如何初始化KeyGenerator和產(chǎn)生密鑰。

為了生成密鑰,我們首先得獲得KeyGenerator的一個實例。這可以由調(diào)用KeyGenerator類的靜態(tài)方法getInstance完成。我們用普通的、不帶模式或者方案的DES算法?蛇x地,你可以如下所示傳遞參數(shù):
DES/ECB/PKCS5Padding

這樣就提供了帶ECB(電子密碼本)模式和PKCS#5補充風格的DES算法。你還可以傳遞第2個字符串參數(shù)指定要使用的供應(yīng)者實現(xiàn),不過這并不是必需的:
KeyGenerator kg = KeyGenerator.getInstance(&quot;DES&quot&#59;

獲得自己的KeyGenerator,之后就可以調(diào)用generateKey方法獲得我們的密鑰:
Key key = kg.generateKey()&#59;


產(chǎn)生密碼
我們采用生成密鑰相同的方式生成一個密碼。我們必須調(diào)用Cipher類的靜態(tài)方法getInstance。該方法的參數(shù)同KeyGenerator完全一樣:
Cipher cipher = Cipher.getInstance(“DES”)&#59;

程序清單E 顯示了有關(guān)的操作程序。


數(shù)據(jù)加密和解密
加密是在字節(jié)級別上進行的,所以數(shù)據(jù)的各個方面一個不落全都會被加密。一旦獲得了密鑰和密碼,你就可以對數(shù)據(jù)進行安全操作了。值得注意的是密鑰和密碼必須采用同類算法。你不能用DESede初始化密鑰卻用DES初始化密碼。Cipher對象采用同樣的方法對數(shù)據(jù)加密和解密,所以你必須首先對其初始化以便它知道對數(shù)據(jù)進行怎樣的操作:
cipher.init(Cipher.ENCRYPT_MODE, key)&#59;

以上方法調(diào)用對Cipher對象初始化以準備加密數(shù)據(jù)。加密數(shù)據(jù)的最簡單辦法就是調(diào)用 Cipher對象的doFinal方法,同時傳遞字節(jié)數(shù)組:
byte[] data = “Hello World!”.getBytes()&#59;
byte[] result = cipher.doFinal(data)&#59;

result現(xiàn)在包含傳遞數(shù)據(jù)的加密形式。對同一數(shù)據(jù)解密也很容易。但在解密之前,我們必須重新初始化Cipher對象以便其準備解密:
cipher.init(Cipher.DECRYPT_MODE, key)&#59;

之后即可解密:
byte[] original = cipher.doFinal(result)&#59;

現(xiàn)在original應(yīng)該和data.完全相同。程序清單F所示為全部源代碼。


小結(jié)
JCE是一種強大的API,它可以實施多種類型的加密和其他涉及安全的任務(wù)。我們已經(jīng)知道了如何以靜態(tài)和動態(tài)方式安裝JCE,以及采用對稱加密算法對簡單消息加密和解密。在本系列的第2部分,我還會利用以上的這些知識運用到真實環(huán)境下來,教你如何編寫簡單的封裝類以結(jié)合套接字加密應(yīng)用程序的所有網(wǎng)絡(luò)流量。

您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP