posts - 33, comments - 46, trackbacks - 0, articles - 2
          通常在weblogic的config.xml文件中,對(duì)于關(guān)鍵字符串、密碼會(huì)自動(dòng)加密,例如LDAP密碼、數(shù)據(jù)庫JDBC連接池連接密碼等。通常加密之后前面會(huì)加上{3DES}的標(biāo)識(shí)。
          3DES就是DES算法的增強(qiáng),相關(guān)資料如下:
          1、DES(Data Encryption Standard)是一種經(jīng)典的對(duì)稱算法。其數(shù)據(jù)分組長度為64位,使用的密鑰為64位,有效密鑰長度為56位(有8位用于奇偶校驗(yàn))。它由IBM公司在70年代開發(fā),經(jīng)過政府的加密標(biāo)準(zhǔn)篩選后,于1976年11月被美國政府采用,隨后被美國國家標(biāo)準(zhǔn)局和美國國家標(biāo)準(zhǔn)協(xié)會(huì)(American National Standard Institute, ANSI) 承認(rèn)。

          該技術(shù)算法公開,在各行業(yè)有著廣泛的應(yīng)用。DES算法從公布到現(xiàn)在已有20多年的歷史,由于計(jì)算機(jī)能力的飛速發(fā)展,DES的56位密鑰長度顯得有些太短了,已經(jīng)有可能通過窮舉的

          方法來對(duì)其進(jìn)行攻擊。但是除此以外,直到現(xiàn)在還沒有發(fā)現(xiàn)窮舉以外的能有效破譯DES的方法。
          2、DES算法現(xiàn)在已經(jīng)不能提供足夠的安全性,因?yàn)槠溆行荑€只有56位。因此,后來又提出了三重DES(或稱3DES),該方法的強(qiáng)度大約和112比特的密鑰強(qiáng)度相當(dāng)。
          這種方法用兩個(gè)密鑰對(duì)明文進(jìn)行三次運(yùn)算。設(shè)兩個(gè)密鑰是K1和K2,其算法的步驟如圖3所示:
          1. 用密鑰K1進(jìn)行DES加密。
          2. 用K2對(duì)步驟1的結(jié)果進(jìn)行DES解密。
          3. 用步驟2的結(jié)果使用密鑰K1進(jìn)行DES加密。

          首先需要找到加密的密鑰,根據(jù)BEA文檔可以發(fā)現(xiàn)是文件SerializedSystemIni.dat,查找一下安裝目錄就可以找到整個(gè)問見,通常系統(tǒng)管理員應(yīng)該將該文件設(shè)置為不能直接訪問,以提高安全性。
          加密、解密的大致演示算法代碼如下,在WebLogic 9.2下面調(diào)試通過,運(yùn)行編譯前應(yīng)該先運(yùn)行setExamplesEnv.cmd(參考)的環(huán)境變量,以保證相關(guān)類庫已經(jīng)被引用了。對(duì)于低版本的WebLogic,例如WebLogic 7.0/8.1可能不能直接在命令行執(zhí)行,因?yàn)镾erializedSystemIni必須在控制臺(tái)Console環(huán)境下面才能調(diào)用,有興趣的朋友可以自行測(cè)試看看。
          ?1import?weblogic.security.internal.*;
          ?2import?weblogic.security.internal.encryption.EncryptionService;
          ?3import?weblogic.utils.encoders.BASE64Decoder;
          ?4import?weblogic.utils.encoders.BASE64Encoder;
          ?5public?class?CrackData?
          ?6{
          ?7????public?static?void?main(String[]?args)?
          ?8????{
          ?9????????byte[]?salt,keys;
          10????????salt=SerializedSystemIni.getSalt();
          11????????keys=SerializedSystemIni.getEncryptedSecretKey();
          12????????String?data="";
          13????????for(int?i=0;i<salt.length;i++){
          14????????????data+=salt[i]+",";
          15????????}

          16????????System.out.println("salt:"+data);
          17????????data="";
          18????????for(int?i=0;i<keys.length;i++){
          19????????????data+=keys[i]+",";
          20????????}

          21????????System.out.println("Key:"+data);
          22????????//EncryptionService?svr=SerializedSystemIni.getExistingEncryptionService();
          23????????EncryptionService?svr=SerializedSystemIni.getEncryptionService();
          24????????System.out.println(svr);
          25????????System.out.println(svr.getAlgorithm());
          26????????if(args.length>1){
          27????????????if(args[0].equals("encrypt")){
          28????????????????byte[]?edata=svr.encryptString(args[1]);
          29????????????????String?s?=?(new?BASE64Encoder()).encodeBuffer(edata);
          30????????????????System.out.println("Encode:"+s);
          31????????????}

          32????????????if(args[0].equals("decrypt")){
          33????????????????try{
          34????????????????byte[]?edata?=?(new?BASE64Decoder()).decodeBuffer(args[1]);
          35????????????????String?txt=svr.decryptString(edata);
          36????????????????System.out.println("Decode:"+txt);
          37????????????????}
          catch(Exception?ex){
          38????????????????????ex.printStackTrace();
          39????????????????}

          40????????????}

          41????????}

          42????????
          43????}

          44}

          45

          測(cè)試運(yùn)行結(jié)果如下:
          root@srdsh?#?/rdsh/bea92/jdk150_04/bin/java?CrackData?decrypt?nMttUc5jNe9RNJXslXjbJQ==
          -86,123,19,107,
          -42,-28,-75,-100,31,0,25,-93,75,115,40,-3,-15,42,-53,41,-25,-13,-6,8,36,85,-81,2
          8,66,-110,31,38,-29,-79,-44,-48,
          weblogic.security.internal.encryption.JSafeEncryptionServiceImpl@199f91c
          3DES
          Decode:weblogic
          root@srdsh?#?
          /rdsh/bea92/jdk150_04/bin/java?CrackData?decrypt?erzD515N5z2zSnOk7uG1cYQthCbYA5OU6Bw+Zt5BsjPruTQaOZASh+ZZW4kuBGvfbZ2BXWSACbgOZ2MY4bHtpOPps/6WfZJg
          -86,123,19,107,
          -42,-28,-75,-100,31,0,25,-93,75,115,40,-3,-15,42,-53,41,-25,-13,-6,8,36,85,-81,2
          8,66,-110,31,38,-29,-79,-44,-48,
          weblogic.security.internal.encryption.JSafeEncryptionServiceImpl@199f91c
          3DES
          Decode:
          0xa778f572127d2282247ec653147c35d4e4040aca016c6d1e06ab325af5798fca
          root@srdsh?#

          Feedback

          # re: WebLogic配置文件Config.xml中的{3DES}加密字符串的解密思路[未登錄]  回復(fù)  更多評(píng)論   

          2009-11-24 10:16 by java
          你好 我是一個(gè)初學(xué)的,上述的程序怎么在window下運(yùn)行, 我已將安裝weblogic9.2
          謝謝
          主站蜘蛛池模板: 博爱县| 阳江市| 巫溪县| 保亭| 漯河市| 东宁县| 铜陵市| 自治县| 平安县| 嘉黎县| 高碑店市| 天等县| 浦城县| 肥东县| 奉贤区| 同德县| 苏尼特右旗| 独山县| 永嘉县| 崇信县| 巢湖市| 资中县| 深水埗区| 景洪市| 于都县| 柳江县| 巴林左旗| 会昌县| 胶州市| 南岸区| 墨脱县| 海原县| 蒲江县| 陆河县| 会东县| 九龙县| 雷山县| 福州市| 永宁县| 重庆市| 松江区|