DES加密算法以及在JME中的實(shí)現(xiàn)_第1頁(yè)
DES加密算法以及在JME中的實(shí)現(xiàn)_第2頁(yè)
DES加密算法以及在JME中的實(shí)現(xiàn)_第3頁(yè)
DES加密算法以及在JME中的實(shí)現(xiàn)_第4頁(yè)
DES加密算法以及在JME中的實(shí)現(xiàn)_第5頁(yè)
已閱讀5頁(yè),還剩5頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、DES加密算法以及在J2ME中的實(shí)現(xiàn)J2ME于1999年6月第一次由Sun推向Java團(tuán)體,經(jīng)過(guò)幾年的發(fā)展,逐漸被各種電子生產(chǎn)商所接受,但是J2ME的安全問(wèn)題也越來(lái)越受到大家的關(guān)注,為此,我們今天就來(lái)給大家介紹一下DES加密算法是如何在J2ME中實(shí)現(xiàn)的。一、J2ME簡(jiǎn)介J2ME是為機(jī)頂盒、移動(dòng)電話和PDA之類嵌入式消費(fèi)電子設(shè)備提供Java語(yǔ)言平臺(tái),包括虛擬機(jī)和一系列標(biāo)準(zhǔn)化的Java API。它和Java SE、Java EE一起構(gòu)成Java技術(shù)的三大版本,并且同樣是通過(guò)JCP(Java Community Process)制訂。二、DES加密算法以及在J2ME中的實(shí)現(xiàn)1、DES加密算法簡(jiǎn)介DE

2、S加密算是一種采用傳統(tǒng)加密方法的分組加密算法,它的算法是對(duì)稱的,既可用于加密又可用于解密。DES加密算法主要采用替換和移位的方法加密。它用56位密鑰對(duì)64位二進(jìn)制數(shù)據(jù)塊進(jìn)行加密,每次加密可對(duì)64位的輸入數(shù)據(jù)進(jìn)行1 6輪編碼,經(jīng)過(guò)一系列替換和移位后,輸入的64位原始數(shù)據(jù)轉(zhuǎn)換成完全不同的64位輸出數(shù)據(jù)。這種算法運(yùn)算速度快,密鑰產(chǎn)生容易,適合于在當(dāng)前大多數(shù)計(jì)算機(jī)上用軟件方法實(shí)現(xiàn)。2、Bouncy Castlc J2ME加密包介紹J2ME中DES加密方法可以由Bouncy Castlc CryptoAPIs來(lái)實(shí)現(xiàn),并且它是開(kāi)源代碼庫(kù)。以下列舉的程序代碼均基于此類的函數(shù)加密庫(kù)。此加密包是在對(duì)原有的J2S

3、E支持的基礎(chǔ)之上針對(duì)J2ME平臺(tái)特點(diǎn)而優(yōu)化生成的,它完全兼容Sun JCE框架,而且可以完全將其應(yīng)用在手機(jī)端,用戶可以開(kāi)發(fā)出適合自己的加密算法。3、Bouncy Castlc J2ME加密包使用方法我們可以到其網(wǎng)站上下載適用與J2mc版本的Api包。下面例程所下載的是lcrypto-j2mc-115 .Zip文件,解壓后的文件目錄為:docs,zips,src以及其它部分文檔文件。該類庫(kù)的使用如下:首先解壓Zips中midp_crypto.zip文件,生成Java和Org目錄,然后在JBuildcr中建立新工程,例如ncwpIj,接著按如下步驟進(jìn)行:1、在此目錄下建一個(gè)新目錄,如Lib;2、把

4、解壓后的Java和Org目錄內(nèi)容拷貝到Lib下;3、選擇Proj cct-projcctpropcrtics-path-rcquirc librarics-ncw- Lib目錄, 然后確定,此Lib目錄下的庫(kù)文件就添加到新建工程中了;4、繼續(xù)建立相應(yīng)的應(yīng)用性MIDPlct程序,在應(yīng)用中就可以使用此程序加密APls了。三、在J2ME中實(shí)現(xiàn)DES加密的具體例程介紹1、程序相關(guān)類中的函數(shù)說(shuō)明MIDlct1類中的Constructor函數(shù)用于界面元素的初始化:startApp():虛擬機(jī)調(diào)用的入口函數(shù):pauscApp():用于虛擬機(jī)調(diào)度本程序的暫停處理;dcstroyApp():銷毀本程序的調(diào)用處理

5、:cormnandAction()函數(shù)用于解析用戶相關(guān)的命令。本例程在原有加密API的基礎(chǔ)上構(gòu)造出一個(gè)新的加密解密類Encryptor,實(shí)現(xiàn)對(duì)已有APIs的封裝。程序的運(yùn)行界面如圖1所示。2、實(shí)現(xiàn)并執(zhí)行DES加密及解密部分的代碼程序開(kāi)頭是Java相應(yīng)類庫(kù)的引用和引用加密包的代碼,這部分內(nèi)容省略。緊接著本例程去完成界面元素的初始化,包括“退出”,“發(fā)送”,“后退”,“連接”的按鈕初始化,代碼同樣也省略了。接下來(lái)就是實(shí)現(xiàn)并執(zhí)行DES加密及解密部分的代碼設(shè)計(jì),代碼如下:public void sLarLApp ()m_display .sctCurrcnt (m_DispForm);/虛擬機(jī)調(diào)用的入

6、口函數(shù);public void pauscApp()/用于虛擬機(jī)調(diào)度本程序的暫停處理;public void dcstroyApp (boolcan unconditional)/銷毀本程序的調(diào)用處理;public void commandAction (Command cmd,Displayablc disp)ilIcmd=cmdExit)dcstroyApp (lalsc);notilyDcstr oycd ();il(cmdcmdEncrypt )DESExc();/command人ction 0函數(shù)用于解析用戶相關(guān)的命令解析privaLc void DESExc 0 String Tc

7、xt=”234567String Kcy;bytc Omsg;String sLrMsg;Kcy=m_KcyTcxL .gctSLring ();Tcxt=m OriginalTcxt .gctString ();Systcm .ouLprintln(“Kcy:” I Kcy);SysLcm .ouLprintln(“Tcxt:”ITcxL);iIKcy.cquals (“)0I(TcxL.cquals c”)m_KcyTcxL .sctString(”請(qǐng)輸入密鑰,原文!”);rcturn;Encryptor cncryptor = ncw Encryptor ( Kcy );Lry msg=

8、cncryptor .cncryptSLring (Tcx0;sLrMsg= ncw String(msg ,O,msg .lcngth );SysLcm .out.println(“cncodc :” sLrMsg );m_EncypLTcxt .sctString (strMsg );sLrMsg=cncryptor .dccryptString (msg);SysLcm .ouL.println( Dccodc : I sLrMsg );m_DccyptTcxt .sctString (strMsg );caLch (ExccpLion c ) public void mcssagc (

9、String s SysLcm .ouL.println( M: i s);public void status (String s) SysLcm .ouL.println(S: I s);3、在原有加密API的基礎(chǔ)上構(gòu)造出一個(gè)新的加密解密類Encryptor部分的代碼以下代碼是關(guān)于一個(gè)封裝the Bouncy Castlc輕量級(jí)APls,用于加密以及解密的類,具體設(shè)計(jì)如下:public class Encryptor privaLc BullcrcdBlockCiphcr ciphcr;privaLc KcyParamctcr kcy;public EncrypLor( bytc kcy)

10、ciphcrncw PauldcdBlockCiphcrncw CBCBlockCiphcrncw DESEnginc ();/初始化密鑰this.kcyncw KcyParamctcr(kcy);public EncrypLor( String kcy ) this( kcy.gctBytcs 0 );privatc bytc callCiphcr ( bytc data )Lhrows CryptoExccptio n int sizc ciphcr.gctOutputSizc ( data.lcngth );bytc rcsult = ncw bytc sizc ;int olcn =

11、ccssBytcs(data,O,data.lcngth,rcsult,0);olcn i ciphcr.doFinal ( rcsult, olcn );if( olcn sizc ) bytc Lmp = ncw bytc olcn ;SysLcm .arraycopy ( rcsult, 0, Lmp, 0, olcn );rcsult = Lmp;rcturn rcsult;/加密數(shù)據(jù)public synchronizcd bytc cncrypt ( bytc data )Lhrows CryptoExccpLion il( data = null II data

12、.lcngth = 0 ) rcturn ncw bytc0;ciphcr.init( Lruc, kcy );rcturn callCiphcr( data );/加密一個(gè)串public bytco cncryptSLring ( String data )Lhrows CryptoExccption if( data = null II data .lcngth O = 0 ) rcturn ncw bytc 0;rcturn cncrypt ( daLa .gctBytcs 0 );/解密數(shù)據(jù)public synchronizcd bytc dccrypt ( bytc data )Lhrows CryptoExccption if( data = null II data .lcngth = 0 ) rcturn ncw bytc0;ciphcr .init( Ialsc, kcy);rcturn callCiphcr( data);/下面的代碼是用于解密剛才加密了的數(shù)據(jù)public String dccry

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論