人人做人人澡人人爽欧美,国产主播一区二区,久久久精品五月天,羞羞视频在线观看免费

當前位置:蘿卜系統下載站 > 技術開發教程 > 詳細頁面

在Java中運用DES算法

在Java中運用DES算法

更新時間:2022-09-27 文章作者:未知 信息來源:網絡 閱讀次數:

注:這是從另一篇比較長的文件中摘過來的。只是講述的基本用法。
其中用到的類在jdk 1.4中都有,請參考api中的:javax.crypto,java.security 等包。
如果是jdk 1.3請參考:http://java.sun.com/products/jce/


三、加密、解密
Java加密擴展即Java Cryptography Extension,簡稱JCE。它是Sun的加密服務軟件,包含了加密和密匙生成功能。JCE是JCA(Java Cryptography Architecture)的一種擴展。

JCE沒有規定具體的加密算法,但提供了一個框架,加密算法的具體實現可以作為服務提供者加入。除了JCE框架之外,JCE軟件包還包含了SunJCE服務提供者,其中包括許多有用的加密算法,比如DES(Data Encryption Standard)和Blowfish。

為簡單計,在本文中我們將用DES算法加密和解密字節碼。下面是用JCE加密和解密數據必須遵循的基本步驟:

步驟1:生成一個安全密匙。在加密或解密任何數據之前需要有一個密匙。密匙是隨同被加密的應用一起發布的一小段數據,Listing 3顯示了如何生成一個密匙。
【Listing 3:生成一個密匙】

// DES算法要求有一個可信任的隨機數源
SecureRandom sr = new SecureRandom();

// 為我們選擇的DES算法生成一個KeyGenerator對象
KeyGenerator kg = KeyGenerator.getInstance( "DES" );
kg.init( sr );

// 生成密匙
SecretKey key = kg.generateKey();

// 獲取密匙數據
byte rawKeyData[] = key.getEncoded();

/* 接下來就可以用密匙進行加密或解密,或者把它保存
為文件供以后使用 */
doSomething( rawKeyData );



步驟2:加密數據。得到密匙之后,接下來就可以用它加密數據。除了解密的ClassLoader之外,一般還要有一個加密待發布應用的獨立程序(見Listing 4)。
【Listing 4:用密匙加密原始數據】

// DES算法要求有一個可信任的隨機數源
SecureRandom sr = new SecureRandom();

byte rawKeyData[] = /* 用某種方法獲得密匙數據 */;

// 從原始密匙數據創建DESKeySpec對象
DESKeySpec dks = new DESKeySpec( rawKeyData );

// 創建一個密匙工廠,然后用它把DESKeySpec轉換成
// 一個SecretKey對象
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance( "DES" );
SecretKey key = keyFactory.generateSecret( dks );

// Cipher對象實際完成加密操作
Cipher cipher = Cipher.getInstance( "DES" );

// 用密匙初始化Cipher對象
cipher.init( Cipher.ENCRYPT_MODE, key, sr );

// 現在,獲取數據并加密
byte data[] = /* 用某種方法獲取數據 */

// 正式執行加密操作
byte encryptedData[] = cipher.doFinal( data );

// 進一步處理加密后的數據
doSomething( encryptedData );


步驟3:解密數據。運行經過加密的應用時,ClassLoader分析并解密類文件。操作步驟如Listing 5所示。
【Listing 5:用密匙解密數據】

// DES算法要求有一個可信任的隨機數源
SecureRandom sr = new SecureRandom();

byte rawKeyData[] = /* 用某種方法獲取原始密匙數據 */;

// 從原始密匙數據創建一個DESKeySpec對象
DESKeySpec dks = new DESKeySpec( rawKeyData );

// 創建一個密匙工廠,然后用它把DESKeySpec對象轉換成
// 一個SecretKey對象
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance( "DES" );
SecretKey key = keyFactory.generateSecret( dks );

// Cipher對象實際完成解密操作
Cipher cipher = Cipher.getInstance( "DES" );

// 用密匙初始化Cipher對象
cipher.init( Cipher.DECRYPT_MODE, key, sr );


// 現在,獲取數據并解密
byte encryptedData[] = /* 獲得經過加密的數據 */

// 正式執行解密操作
byte decryptedData[] = cipher.doFinal( encryptedData );

// 進一步處理解密后的數據
doSomething( decryptedData );

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

網站地圖xml | 網站地圖html
主站蜘蛛池模板: 阿克苏市| 柘荣县| 平定县| 潼南县| 图们市| 双桥区| 惠州市| 乃东县| 五寨县| 莫力| 丰都县| 广水市| 凌源市| 雷波县| 利川市| 财经| 洛浦县| 阳东县| 麻阳| 武冈市| 明水县| 治多县| 兴城市| 随州市| 汕尾市| 五台县| 互助| 汝南县| 武隆县| 攀枝花市| 景洪市| 昌吉市| 神池县| 潼关县| 松桃| 和田市| 柘荣县| 新巴尔虎左旗| 南木林县| 皮山县| 长宁区|