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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

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

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

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

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

6、口函數(shù);public void pauscApp()/用于虛擬機調度本程序的暫停處理;public void dcstroyApp (boolcan unconditional)/銷毀本程序的調用處理;public void commandAction (Command cmd,Displayablc disp)ilIcmd=cmdExit)dcstroyApp (lalsc);notilyDcstr oycd ();il(cmdcmdEncrypt )DESExc();/command人ction 0函數(shù)用于解析用戶相關的命令解析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(”請輸入密鑰,原文!”);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的基礎上構造出一個新的加密解密類Encryptor部分的代碼以下代碼是關于一個封裝the Bouncy Castlc輕量級APls,用于加密以及解密的類,具體設計如下: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 );/加密一個串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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論