|
Posted on 2006-09-07 12:35 在路上... 阅读(8495) 评论(1) 编辑 收藏 所属分类: JAVA相关
通常在weblogic的config.xml文件中,对于关键字符串、密码会自动加密,例如LDAP密码、数据库JDBC连接池连接密码等。通常加密之后前面会加上{3DES}的标识。 3DES就是DES算法的增强,相关资料如下: 1、DES(Data Encryption Standard)是一种经典的对称算法。其数据分组长度为64位,使用的密钥为64位,有效密钥长度为56位(有8位用于奇偶校验)。它由IBM公司在70年代开发,经过政府的加密标准筛选后,于1976年11月被美国政府采用,随后被美国国家标准局和美国国家标准协会(American National Standard Institute, ANSI) 承认。
该技术算法公开,在各行业有着广泛的应用。DES算法从公布到现在已有20多年的历史,由于计算机能力的飞速发展,DES的56位密钥长度显得有些太短了,已经有可能通过穷举的
方法来对其进行攻击。但是除此以外,直到现在还没有发现穷举以外的能有效破译DES的方法。 2、DES算法现在已经不能提供足够的安全性,因为其有效密钥只有56位。因此,后来又提出了三重DES(或称3DES),该方法的强度大约和112比特的密钥强度相当。 这种方法用两个密钥对明文进行三次运算。设两个密钥是K1和K2,其算法的步骤如图3所示: 1. 用密钥K1进行DES加密。 2. 用K2对步骤1的结果进行DES解密。 3. 用步骤2的结果使用密钥K1进行DES加密。
首先需要找到加密的密钥,根据BEA文档可以发现是文件SerializedSystemIni.dat,查找一下安装目录就可以找到整个问见,通常系统管理员应该将该文件设置为不能直接访问,以提高安全性。 加密、解密的大致演示算法代码如下,在WebLogic 9.2下面调试通过,运行编译前应该先运行setExamplesEnv.cmd(参考)的环境变量,以保证相关类库已经被引用了。对于低版本的WebLogic,例如WebLogic 7.0/8.1可能不能直接在命令行执行,因为SerializedSystemIni必须在控制台Console环境下面才能调用,有兴趣的朋友可以自行测试看看。
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 测试运行结果如下:
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}加密字符串的解密思路[未登录] 回复 更多评论
2009-11-24 10:16 by
你好 我是一个初学的,上述的程序怎么在window下运行, 我已将安装weblogic9.2
谢谢
|