现在的问题是,java组用java的zip加密成字节流,然后用base64加密,然后发给我们PHP。
现在用PHP可以base64解密,但是无法处理zip解压缩,因为涉及到字节流。
同时,java组不能改变算法,所以只能从PHP这边考虑,请各位大大们出个主意

解决方案 »

  1.   

    不能解压缩,到底是什么问题呢?也不说,给你移动到php区了。
      

  2.   

    斑竹。这也算个java问题啊。。
      

  3.   

    UEsDBBQACAgIANWu+UQAAAAAAAAAAAAAAAABAAAAMEtMSgYAUEsHCMJBJDUFAAAAAwAAAA==
    这是发过来的串。
      

  4.   

    /**
     * 使用zip进行压缩
     * 
     * @param str 压缩前的文本
     * @return 返回压缩后的文本
     */
    public static final String encrypt(String str) {
    if (str == null)
    return null;
    byte[] compressed;
    ByteArrayOutputStream out = null;
    ZipOutputStream zout = null;
    String compressedStr = null;
    try {
    out = new ByteArrayOutputStream();
    zout = new ZipOutputStream(out);
    zout.putNextEntry(new ZipEntry("0"));
    zout.write(str.getBytes());
    zout.closeEntry();
    compressed = out.toByteArray();
    compressedStr = new sun.misc.BASE64Encoder()
    .encodeBuffer(compressed);
    } catch (IOException e) {
    compressed = null;
    } finally {
    if (zout != null) {
    try {
    zout.close();
    } catch (IOException e) {
    }
    }
    if (out != null) {
    try {
    out.close();
    } catch (IOException e) {
    }
    }
    }
    return compressedStr;
    } 斑竹,这是java的加密算法。。
      

  5.   

    你的PHP代码呢?贴出来。
      

  6.   

    解压出来是abc
      

  7.   

    不是贴出来,现在是不知道怎么用PHP怎么做的问题。。
      

  8.   

    你不是说现在用PHP可以base64解密,但是无法处理zip解压缩吗?
    先看看你现在的代码。
    解密后是怎么样的?问问题要讲清楚你的业务需求跟你现在能做到的东西。
      

  9.   

    我有点束手无策了
    将 base64 解码后的内容保存到文件,用 360rar 可以打开(其他压缩软件不行)
    php 的 ZipArchive 类也打不开看主体数据 4b4c4a0600 是对的,但前后的信息位都不对
      

  10.   

    我觉得说的不难啊。。问题就出在怎么用PHP的zip解压缩的问题zip的那几个函数都和文件有关,现在处理的是java的字节流。。不知道我说的你明白的了吗?
      

  11.   

    我也是用file_put_content,但是这个不是文件流,是一个字节流,所以硬生成一个文件是不对的。。求斑竹再想想办法。。
      

  12.   

    但他的确是个文件流
    头部除了一个字节外与 zip 文件流没有区别
      

  13.   

    的确不是一个文件流,如果是一个准确的文件流的话用压缩软件打开不会报错。
    Java的解压缩代码我已经发了,斑竹参考一下,同时,java同事说了,那的确是一个字节流。。
      

  14.   

    与你争这个流不流的没有意思
    你的压缩包为504b0304140008080800d5aef94400000000000000000000000001000000304b4c4a0600504b0708c24124350500000003000000
    头是这个
    504b0304140008080800
    与正常的
    504b0304140000080800
    就这点差异
    该处解释 gen purpose bit flag
    标志了算法的区别
    所以保存成文件后 360rar 能打开,其他压缩软件打不开
    究其原因:360rar 是自动升级的,其他压缩软件好几年够没升级了
      

  15.   

    for($i=0;$i<10; $i++)
    echo "$i ", bin2hex(gzcompress('abc',$i)),PHP_EOL;
    0 7801010300fcff616263024d0127
    1 78014b4c4a0600024d0127
    2 785e4b4c4a0600024d0127
    3 785e4b4c4a0600024d0127
    4 785e4b4c4a0600024d0127
    5 785e4b4c4a0600024d0127
    6 789c4b4c4a0600024d0127
    7 78da4b4c4a0600024d0127
    8 78da4b4c4a0600024d0127
    9 78da4b4c4a0600024d0127现有的工具始终压缩不成你包中的数据
      

  16.   

    java自带zip包下操作的都是字节流。