请教,PHP怎么处理java的字节流? 现在的问题是,java组用java的zip加密成字节流,然后用base64加密,然后发给我们PHP。现在用PHP可以base64解密,但是无法处理zip解压缩,因为涉及到字节流。同时,java组不能改变算法,所以只能从PHP这边考虑,请各位大大们出个主意 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不能解压缩,到底是什么问题呢?也不说,给你移动到php区了。 斑竹。这也算个java问题啊。。 UEsDBBQACAgIANWu+UQAAAAAAAAAAAAAAAABAAAAMEtMSgYAUEsHCMJBJDUFAAAAAwAAAA==这是发过来的串。 /** * 使用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的加密算法。。 你的PHP代码呢?贴出来。 解压出来是abc 不是贴出来,现在是不知道怎么用PHP怎么做的问题。。 你不是说现在用PHP可以base64解密,但是无法处理zip解压缩吗?先看看你现在的代码。解密后是怎么样的?问问题要讲清楚你的业务需求跟你现在能做到的东西。 我有点束手无策了将 base64 解码后的内容保存到文件,用 360rar 可以打开(其他压缩软件不行)php 的 ZipArchive 类也打不开看主体数据 4b4c4a0600 是对的,但前后的信息位都不对 我觉得说的不难啊。。问题就出在怎么用PHP的zip解压缩的问题zip的那几个函数都和文件有关,现在处理的是java的字节流。。不知道我说的你明白的了吗? 我也是用file_put_content,但是这个不是文件流,是一个字节流,所以硬生成一个文件是不对的。。求斑竹再想想办法。。 但他的确是个文件流头部除了一个字节外与 zip 文件流没有区别 的确不是一个文件流,如果是一个准确的文件流的话用压缩软件打开不会报错。Java的解压缩代码我已经发了,斑竹参考一下,同时,java同事说了,那的确是一个字节流。。 与你争这个流不流的没有意思你的压缩包为504b0304140008080800d5aef94400000000000000000000000001000000304b4c4a0600504b0708c24124350500000003000000头是这个504b0304140008080800与正常的504b0304140000080800就这点差异该处解释 gen purpose bit flag标志了算法的区别所以保存成文件后 360rar 能打开,其他压缩软件打不开究其原因:360rar 是自动升级的,其他压缩软件好几年够没升级了 for($i=0;$i<10; $i++)echo "$i ", bin2hex(gzcompress('abc',$i)),PHP_EOL;0 7801010300fcff616263024d01271 78014b4c4a0600024d01272 785e4b4c4a0600024d01273 785e4b4c4a0600024d01274 785e4b4c4a0600024d01275 785e4b4c4a0600024d01276 789c4b4c4a0600024d01277 78da4b4c4a0600024d01278 78da4b4c4a0600024d01279 78da4b4c4a0600024d0127现有的工具始终压缩不成你包中的数据 java自带zip包下操作的都是字节流。 html文件转化为pdf格式 PHP大侠们,帮忙提供下BUG少的源码学习,源码接近工厂标准的,歇歇 php源码阅读 跪求一个关于rewrite的很简单的应用 有关邮件发送的问题 [求助]此jQuery在html后缀文件可用,在php后缀文件就用不了! 将python嵌入php 同一台电脑,如何限制他在一分钟内只能访问5次某个域名的动态页面。超过五次的,就跳转到指定静态页。 如何PHP根据uid计算出来插入哪个数据库? 请问下这个百分号是啥意思啊 看不懂 如何活动td中的数据 apache+nginx url重写问题
这是发过来的串。
* 使用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的加密算法。。
先看看你现在的代码。
解密后是怎么样的?问问题要讲清楚你的业务需求跟你现在能做到的东西。
将 base64 解码后的内容保存到文件,用 360rar 可以打开(其他压缩软件不行)
php 的 ZipArchive 类也打不开看主体数据 4b4c4a0600 是对的,但前后的信息位都不对
头部除了一个字节外与 zip 文件流没有区别
Java的解压缩代码我已经发了,斑竹参考一下,同时,java同事说了,那的确是一个字节流。。
你的压缩包为504b0304140008080800d5aef94400000000000000000000000001000000304b4c4a0600504b0708c24124350500000003000000
头是这个
504b0304140008080800
与正常的
504b0304140000080800
就这点差异
该处解释 gen purpose bit flag
标志了算法的区别
所以保存成文件后 360rar 能打开,其他压缩软件打不开
究其原因:360rar 是自动升级的,其他压缩软件好几年够没升级了
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现有的工具始终压缩不成你包中的数据