首页
社区
课程
招聘
[已解决] [悬赏]初学XML 转换,怎么去做转换呢? 46.00雪花
发表于: 2017-11-10 14:53 2928

[已解决] [悬赏]初学XML 转换,怎么去做转换呢? 46.00雪花

2017-11-10 14:53
2928

要求:转换文件

public static void main(String[] args) throws Exception

  {

fname =“C:\\1.xml”;

byte[] fbyte = readFile(fname);

          String fXML = getXml(fbyte);

}


 public static byte[] readFile(String aFileName)

  {

    FileInputStream fio = null;

    byte[] abyte0 = (byte[])null;

    try

    {

      fio = new FileInputStream(aFileName);

      byte[] ftemp = new byte[8192];

      ByteArrayOutputStream fbyteout = new ByteArrayOutputStream(8192);

      int flen = 0;


      while (flen >= 0)

      {

        flen = fio.read(ftemp);

        if (flen > 0)

          fbyteout.write(ftemp, 0, flen);

      }

      ftemp = fbyteout.toByteArray();

      abyte0 = ftemp;

      if (fio != null)

        fio.close();

    } catch (Exception localException) {

    }

    return abyte0;

  }


public static String getXml(byte[] abytes)
{
if ((abytes == null) || (abytes.length <= 0))
return null;
byte[] ftemp = new byte[abytes.length];
for (int i = 0; i < ftemp.length; i++) {
ftemp[i] = ((byte)(abytes[i] ^ 0xFFFFFFFF));
}
EncodeBase64 fdecoder = new EncodeBase64();
String result = null;
try
{
result = new String(EncodeBase64.decode(new String(ftemp)), "UTF-8");
}
catch (Exception ex)
{
result = null;
}
return result;
}

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
收藏
免费 0
支持
分享
最新回复 (16)
雪    币: 3710
活跃值: (2669)
能力值: ( LV7,RANK:105 )
在线值:
发帖
回帖
粉丝
2
lz要转成什么样?
2017-11-14 19:42
0
雪    币: 205
活跃值: (60)
能力值: ( LV1,RANK:10 )
在线值:
发帖
回帖
粉丝
3
yegu lz要转成什么样?
上传了个附件,要怎么把变上附件呢
2017-11-15 14:29
0
雪    币: 3710
活跃值: (2669)
能力值: ( LV7,RANK:105 )
在线值:
发帖
回帖
粉丝
4
coodi 上传了个附件,要怎么把变上附件呢
<?xml  version="1.0"  encoding="GB2312"?>
<SeeyonOAPlugIn>
    <PlugID>06-E9-9C-00-00-26,C2FinalSupply</PlugID>
    <OAVersion>A8V51</OAVersion>
    <C2Version>b2d6dae0bb2c05acc23a22e33b5a6aec</C2Version>
    <ERPVersion>!L</ERPVersion>
    <DogID>dcc03690dfec3b904c7da60f142ccd5a</DogID>
    <VoucherCount>AD</VoucherCount>
    <DogCheck>258'1</DogCheck>
    <RptCount>AD</RptCount>
    <StartTime>FDEADMGD</StartTime>
    <C2RunTime>GBD</C2RunTime>
    <PlugGateClass>net.btdz.oa.ext.eipas.common.SystemInit</PlugGateClass>
    <PlugInType>EIPASCHECK</PlugInType>
    <PlugInName>EIPASPlugIn</PlugInName>
</SeeyonOAPlugIn>
是要把你的附件转换成这个xml吗?
2017-11-15 15:31
0
雪    币: 205
活跃值: (60)
能力值: ( LV1,RANK:10 )
在线值:
发帖
回帖
粉丝
5
yegu 06-E9-9C-00-00-26,C2FinalSupply A8V51 b2d6dae0bb2c05acc23a22e33b5a6aec !L dcc03690 ...
是呀,哥
2017-12-2 18:53
0
雪    币: 3710
活跃值: (2669)
能力值: ( LV7,RANK:105 )
在线值:
发帖
回帖
粉丝
6
上传的附件:
2017-12-3 23:02
0
雪    币: 205
活跃值: (60)
能力值: ( LV1,RANK:10 )
在线值:
发帖
回帖
粉丝
7
yegu
是把1.xml转成解析前的,不是解释成明码
2017-12-5 00:32
0
雪    币: 205
活跃值: (60)
能力值: ( LV1,RANK:10 )
在线值:
发帖
回帖
粉丝
8
yegu
不是解释,解释直接用上面代码就可以解释了,只是怎么把上面XML加密回去
2017-12-5 00:35
0
雪    币: 1
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
EncodeBase64你这个类在哪个包的,找不到你这个包
2017-12-5 08:06
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10

import  com.sun.org.apache.xml.internal.security.utils.Base64;

import  java.io.ByteArrayOutputStream;
import  java.io.FileInputStream;

public  class  XmlEncode  {
        public  static  void  main(String[]  args)  {

                String  filePath  =  "/home/lewis/Downloads/1.xml";
                System.out.println("----从文件读取解密----");
                String  src  =  getSrcXml(readFile(filePath));
                System.out.println(src);
                System.out.println("----对src加密再解密----");
                String  src2  =  getSrcXml(getEncodeXml(src.getBytes()));
                System.out.println(src2);
        }

        public  static  byte[]  readFile(String  aFileName)  {
                FileInputStream  fio  =  null;
                byte[]  abyte0  =  (byte[])  null;
                try  {
                        fio  =  new  FileInputStream(aFileName);
                        byte[]  ftemp  =  new  byte[8192];
                        ByteArrayOutputStream  fbyteout  =  new  ByteArrayOutputStream(8192);
                        int  flen  =  0;

                        while  (flen  >=  0)  {
                                flen  =  fio.read(ftemp);
                                if  (flen  >  0)
                                        fbyteout.write(ftemp,  0,  flen);
                        }
                        ftemp  =  fbyteout.toByteArray();
                        abyte0  =  ftemp;
                        if  (fio  !=  null)
                                fio.close();
                }  catch  (Exception  localException)  {
                }
                return  abyte0;
        }

        public  static  String  getSrcXml(byte[]  abytes)  {

                if  ((abytes  ==  null)  ||  (abytes.length  <=  0))
                        return  null;
                byte[]  ftemp  =  new  byte[abytes.length];
                for  (int  i  =  0;  i  <  ftemp.length;  i++)  {
                        ftemp[i]  =  ((byte)  (abytes[i]  ^  0xFFFFFFFF));
                }

                String  result  =  null;
                try  {
                        result  =  new  String(Base64.decode(ftemp),  "UTF-8");
                }  catch  (Exception  ex)  {
                        result  =  null;
                }
                return  result;
        }

        public  static  byte[]  getEncodeXml(byte[]  bytes)  {
                String  base64encode  =  Base64.encode(bytes);

                byte[]  abytes  =  base64encode.getBytes();


                byte[]  ftemp  =  new  byte[abytes.length];

                for  (int  i  =  0;  i  <  ftemp.length;  i++)  {
                        ftemp[i]  =  ((byte)  (abytes[i]  ^  0xFFFFFFFF));
                }

                return  ftemp;
        }


}

解密时是异或取反  再base64     
加密就是  base64  再异或取反。。
2017-12-5 11:29
0
雪    币: 3710
活跃值: (2669)
能力值: ( LV7,RANK:105 )
在线值:
发帖
回帖
粉丝
11
coodi 不是解释,解释直接用上面代码就可以解释了,只是怎么把上面XML加密回去

编码后与原文件比较完全一样。
上传的附件:
2017-12-5 22:16
0
雪    币: 205
活跃值: (60)
能力值: ( LV1,RANK:10 )
在线值:
发帖
回帖
粉丝
12
yegu 编码后与原文件比较完全一样。
高手,真是太牛了;哈哈。。能加个QQ不?到时给个红包你  67964078
2017-12-5 22:53
0
雪    币: 205
活跃值: (60)
能力值: ( LV1,RANK:10 )
在线值:
发帖
回帖
粉丝
13
不过就是没JAVA  代码,我搞他不定,哈哈
2017-12-5 22:55
0
雪    币: 205
活跃值: (60)
能力值: ( LV1,RANK:10 )
在线值:
发帖
回帖
粉丝
14



yegu

编码后与原文件比较完全一样。

            String  OAVersionStr  =  fXML.substring(fXML.indexOf("<OAVersion>")  +  11,  fXML.indexOf("</OAVersion>"));//A8V51
                        String  DogIDStr  =  fXML.substring(fXML.indexOf("<DogID>")  +  7,  fXML.indexOf("</DogID>"));//dcc03690dfec3b904c7da60f142ccd5a
                        String  C2VersionStr  =  fXML.substring(fXML.indexOf("<C2Version>")  +  11,  fXML.indexOf("</C2Version>"));//b2d6dae0bb2c05acc23a22e33b5a6aec
                        String  ERPVersionStr  =  fXML.substring(fXML.indexOf("<ERPVersion>")  +  12,  fXML.indexOf("</ERPVersion>"));//  <ERPVersion>!L</ERPVersion>
                        String  VoucherCountStr  =  fXML.substring(fXML.indexOf("<VoucherCount>")  +  14,  fXML.indexOf("</VoucherCount>"));//    <VoucherCount>AD</VoucherCount>
                        String  StartTimeStr  =  fXML.substring(fXML.indexOf("<StartTime>")  +  11,  fXML.indexOf("</StartTime>"));    //<StartTime>FDEADMGD</StartTime>
                        String  C2RunTimeStr  =  fXML.substring(fXML.indexOf("<C2RunTime>")  +  11,  fXML.indexOf("</C2RunTime>"));//    <C2RunTime>GBD</C2RunTime>
                        String  RptCountStr  =  fXML.substring(fXML.indexOf("<RptCount>")  +  10,  fXML.indexOf("</RptCount>"));//  <RptCount>AD</RptCount>
                      能不能上加密哪加上去呢?
                        String  DogID  =    Security.MD5(Security.KL("06-E9-9C-00-00-26"));//加密得String  DogIDStr  =  dcc03690dfec3b904c7da60f142ccd5a
                         String  C2Version  =    Security.MD5(Security.KL("不知道"));//加密得
                     解密得到的结果:  

                      ERPVersionStr  =  Security.JM(ERPVersionStr);//U8
                        VoucherCountStr  =  Security.JM(VoucherCountStr);//50
                        RptCountStr  =  Security.JM(RptCountStr);//50
                        StartTimeStr  =  Security.JM(StartTimeStr);//20150930
                        C2RunTimeStr  =  Security.JM(C2RunTimeStr);//360

2017-12-5 23:12
0
雪    币: 205
活跃值: (60)
能力值: ( LV1,RANK:10 )
在线值:
发帖
回帖
粉丝
15



yegu

编码后与原文件比较完全一样。

明码
<?xml  version="1.0"  encoding="GB2312"?>
<SeeyonOAPlugIn>
    <PlugID>06-E9-9C-00-00-26,C2FinalSupply</PlugID>
    <OAVersion>A8V51</OAVersion>
    <C2Version>版本号</C2Version>//不知什么版本 //
    <ERPVersion>U8</ERPVersion>
    <DogID>06-E9-9C-00-00-26</DogID>
    <VoucherCount>50</VoucherCount>
    <DogCheck>258'1</DogCheck>
    <RptCount>50</RptCount>
    <StartTime>20150930</StartTime>
    <C2RunTime>360</C2RunTime>
    <PlugGateClass>net.btdz.oa.ext.eipas.common.SystemInit</PlugGateClass>
    <PlugInType>EIPASCHECK</PlugInType>
    <PlugInName>EIPASPlugIn</PlugInName>
</SeeyonOAPlugIn>
一次加密后

 
再加密

2017-12-5 23:19
0
雪    币: 205
活跃值: (60)
能力值: ( LV1,RANK:10 )
在线值:
发帖
回帖
粉丝
16
大侠有没jAVA的加密源码呢?不懂你这个语言
2017-12-5 23:23
0
雪    币: 3710
活跃值: (2669)
能力值: ( LV7,RANK:105 )
在线值:
发帖
回帖
粉丝
17
coodi 大侠有没jAVA的加密源码呢?不懂你这个语言
https://bbs.pediy.com/thread-218009.htm(9楼)
2017-12-5 23:26
0
游客
登录 | 注册 方可回帖
返回
//