<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    amp@java

      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      99 隨筆 :: 0 文章 :: 228 評論 :: 0 Trackbacks
    Bouncy Castle(http://www.bouncycastle.org/)是一個龐大的加密類庫,支持Java和C#,其中Java部分發(fā)布的源代碼壓縮包就有24M左右,支持JDK 1.0~5.0,支持J2ME(現(xiàn)在叫JavaME)。
    但是,這個類庫使用起來并不那么方便,它并沒有與普通Java類庫那樣以Jar形式發(fā)布立即可用的二進制類庫,而只發(fā)布源代碼,源代碼包含了多份,包括JDK1.0,JDK1.1,JDK1.2,JDK1.3,JDK1.4,JDK1.5,J2ME等,每種環(huán)境都有少量文件不一樣,有多個用于Ant的build xml,分別用于各種不同的JDK,但是每個xml定義了多個target,不知道哪個target才能build出可用的類庫來,選中了其中某個target有可能會出現(xiàn)錯誤,build不下去。文檔太簡單,基本沒講到怎么生成可用的類庫,網(wǎng)上的相關(guān)文檔也很少。我嘗試了兩天才終于把第一個MIDP加密測試程序運行成功。
    我的應(yīng)用只是實現(xiàn)Java ME的加密,所以這里講的只是針對JavaME的,JavaSE應(yīng)該會簡單一點。

    打開下載下來的壓縮包(crypto-138.zip),會發(fā)現(xiàn)里面有一堆文件夾和一堆文件,其中一個文件夾叫j2me,于是第一反應(yīng)就是打開它看看里面是什么,發(fā)現(xiàn)里面只有少量的源代碼文件,看來這只是適用于j2me的一部分源代碼而已,其他通用的部分不在這里。
    還有一個j2me.xml,是一個Ant的build文件,在eclipse里面用ant打開以后,發(fā)現(xiàn)里面有很多target,除了what(輸出一些信息)和init(建立幾個目錄,復(fù)制一些文件)這兩個能執(zhí)行成功之外,其他幾乎都是失敗的,所以通過這個東西是搞不出我們可用的classes來的。
    沒辦法,只有一個個目錄地看,在一個zips目錄里面發(fā)現(xiàn)cldc_sources.zip,里面的源代碼文件有很多,有點像了,于是就把它解壓后放到一個Eclipse ME測試項目的src目錄下,找到org.bouncycastle.crypto.examples包,里面有個MIDPTest.java文件,還有個midp_test.jad,看來這個是用來測試用的MIDP了,調(diào)出WTK的模擬器來運行一下,果然是,成功了。
    下一步是在手機上運行。如果不混淆,生成的JAR包有1.6M之巨,不管了,先試一下。安裝到手機上,到最后出現(xiàn)“授權(quán)失敗”的提示,安裝不成功。記起原來找文檔時在index.html里面看到有這么一句話:The final caveat to this is that as the j2me distribution includes some compatibility classes starting in the java package, you need to use an obfuscator to change the package names before attempting to import a midlet using the BC API. 似乎因為用于j2me的版本有幾個以java開頭的包,里面包含了一些兼容類,可能是用于補充CLDC的不足,由于java開頭的包是系統(tǒng)包,是不允許修改的,所以不處理過的話安裝會失敗。必須先用混淆器弄一下才行。Eclipse ME配置混淆器十分簡單,我使用的是ProGuard。參照http://www.cnjm.net/eclipseme/docs/configuring.html配置即可。然后運行Create Obfuscated Package生成混淆過的包,只有13K。安裝在Nokia 6681上,成功,運行,也成功了。嘗試修改一下MIDPTest.java,在whichCipher方法里面,把返回值改為其他數(shù)字(0-4),就可以修改加密方式,但是由于DES加密使用的密鑰長度為64bit,而默認(rèn)的key是"0123456789abcdef0123456789abcdef",運行DES是會提示密鑰太長,我開始以為把key改為4個字符就可以(因為Java使用Unicode,每個字符2字節(jié),4個字符8字節(jié)=64bit),卻出現(xiàn)了數(shù)組越界的異常,其實這個key并不是直接用作密鑰,還要經(jīng)過處理的。嘗試了8個字符也不行,最后發(fā)現(xiàn)16個字符就可以了,應(yīng)該是每兩個字符對應(yīng)一個16進制數(shù)。測試程序是對“www.bouncycastle.org”這個字符串進行加密和解密,速度還是挺快的,幾乎感覺不到需要時間(在手機上啟動Java程序本來就比較慢)。

    中間還碰到一個問題,由于我是把源代碼直接復(fù)制到一個原來建立好的MIDP項目里,那個MIDP項目里已經(jīng)有個默認(rèn)的JAD文件,但是里面沒有表示要運行的Midlet,生成Jar包之后,安裝到手機上到最后會出現(xiàn)安裝文件無效的提示。打開那個JAD文件,在Midlets標(biāo)簽里點擊Add按鈕,把org.bouncycastle.crypto.examples.MIDPTest添加進去即可。

    以上測試使用的環(huán)境是:
    JDK 1.5.02
    Eclipse 3.2.0
    Eclipse ME 1.7.7 http://eclipseme.org
    Sun WTK 2.5.2 for CLDC
    ProGuard 4.1 http://proguard.sourceforge.net/



    剛剛發(fā)現(xiàn)Bouncy Castle的下載頁面http://www.bouncycastle.org/latest_releases.html里面有專用于J2ME的源代碼發(fā)行包,里面只包含用于J2ME的代碼,如果僅用在J2ME下的話,這個應(yīng)該比較簡單,不用找半天。
    posted on 2008-01-25 19:59 amp@java 閱讀(1448) 評論(1)  編輯  收藏 所屬分類: Java ME

    評論

    # re: 可用在JavaME上的加密包Bouncy Castle的使用 2009-09-02 13:16 LorenLuo
    你好 我想請教一下關(guān)于bouncycastle的用法,要是愿意請加我的:qq 276539211  回復(fù)  更多評論
      

    主站蜘蛛池模板: 亚洲男人av香蕉爽爽爽爽| 亚洲人成网网址在线看| 日韩亚洲国产综合高清| 久久久久久久99精品免费观看| 亚洲片国产一区一级在线观看 | 在线观看免费av网站| 亚洲av午夜成人片精品网站 | jizz免费观看| 综合久久久久久中文字幕亚洲国产国产综合一区首 | 国产一区二区免费在线| 亚洲一区二区三区成人网站| 欧洲黑大粗无码免费| 亚洲字幕AV一区二区三区四区| 成年女人免费v片| 亚洲精品无码成人| 免费永久在线观看黄网站| 日韩在线视频线视频免费网站| 亚洲人成电影网站国产精品 | 亚洲日本天堂在线| 国产精品久久久久影院免费| 成人a毛片视频免费看| 久久久久亚洲av成人无码电影| 成人网站免费看黄A站视频| 亚洲综合激情九月婷婷| 成在人线AV无码免费| 国产偷国产偷亚洲高清人| 亚洲日韩中文字幕日韩在线| 最近中文字幕大全免费版在线 | 日本在线高清免费爱做网站| 亚洲欧洲免费无码| 亚洲爽爽一区二区三区| 97在线视频免费公开观看| 亚洲av午夜精品无码专区| 免费大学生国产在线观看p| 免费人成激情视频在线观看冫| 亚洲另类古典武侠| 亚洲国产成人久久综合野外| 国产免费一区二区视频| 亚洲一区二区三区免费在线观看| 免费一看一级毛片全播放| 伊人久久免费视频|