六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

在Java中使用DES算法

[摘要]注:這是從另一篇比較長的文件中摘過來的。只是講述的基本用法。其中用到的類在jdk 1.4中都有,請參考api中的:javax.crypto,java.security 等包。如果是jdk 1.3請參考:http://java.sun.com/products/jce/三、加密、解密 Java加密擴...
注:這是從另一篇比較長的文件中摘過來的。只是講述的基本用法。
其中用到的類在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沒有規(guī)定具體的加密算法,但提供了一個框架,加密算法的具體實現(xiàn)可以作為服務提供者加入。除了JCE框架之外,JCE軟件包還包含了SunJCE服務提供者,其中包括許多有用的加密算法,比如DES(Data Encryption Standard)和Blowfish。

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

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

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

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

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

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

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



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

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

byte rawKeyData[] = /* 用某種方法獲得密匙數(shù)據(jù) */;

// 從原始密匙數(shù)據(jù)創(chuàng)建DESKeySpec對象
DESKeySpec dks = new DESKeySpec( rawKeyData );

// 創(chuàng)建一個密匙工廠,然后用它把DESKeySpec轉(zhuǎn)換成
// 一個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 );

// 現(xiàn)在,獲取數(shù)據(jù)并加密
byte data[] = /* 用某種方法獲取數(shù)據(jù) */

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

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


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

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

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

// 從原始密匙數(shù)據(jù)創(chuàng)建一個DESKeySpec對象
DESKeySpec dks = new DESKeySpec( rawKeyData );

// 創(chuàng)建一個密匙工廠,然后用它把DESKeySpec對象轉(zhuǎn)換成
// 一個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 );


// 現(xiàn)在,獲取數(shù)據(jù)并解密
byte encryptedData[] = /* 獲得經(jīng)過加密的數(shù)據(jù) */

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

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




主站蜘蛛池模板: 日本黄色免费在线 | 亚洲色视频在线播放网站 | 青春草在线观看精品免费视频 | 日韩激情中文字幕 | 三上悠亚久久国产 | 日韩精品视频在线播放 | 中文字幕日韩专区精品系列 | 日韩精品一区二区三区中文精品 | 三级aa| 日韩精品亚洲专区在线观看 | 亚洲视频你懂的 | 污视频在线免费 | 在线欧美三级 | 天天做天天爱夜夜爽女人爽宅 | 日韩性网站 | 亚洲黄网站wwwwww | 亚洲欧美综合网 | 日本高清视频免费看 | 欧美夜夜夜 | 四虎永久在线精品免费影视 | 色噜噜狠狠色综合免费视频 | 一级做a爰全过程免费视频 一级做a爰片性色毛片小说 | 亚州激情视频在线播放 | 欧洲午夜视频 | 欧日韩美香蕉在线观看 | 天堂中文在线资源 | 伊人久久中文字幕久久cm | 日本一区二区三区高清在线观看 | 日本红怡院亚洲红怡院最新 | 亚洲天天| 亚洲欧美日韩图片 | 亚洲香蕉综合在人在线视看 | 亚洲国产精品日韩专区avtube | 四虎4hu影库免费永久国产 | 欧美一级大片 | 四虎成人免费网址在线 | 午夜精品福利在线观看 | 欧美在线 在线播放 | 人人看人人搞 | 日本vs欧美一区二区三区 | 亚洲无限乱码一二三四区 |