1
gam2046 2015-12-08 14:32:55 +08:00 1
建议你看一下 MD5 的算法,他是分组进行计算的,因此计算过程中不要求你文件的连续性,即使你是连续的文件,在计算散列值的时候,依旧要拆分成一个个块,分别计算。
|
2
loqixh 2015-12-08 14:33:36 +08:00 1
当然可以,用 MD5_Update
|
3
allan888 2015-12-08 14:35:16 +08:00 1
你把 4 个文件当成一个连续的文件看就得了。
“ MD5 中的任意第 i 个分组,每次运算都由前一轮的 128 位结果值和第 i 块 512bit 值进行运算” 你要做的就是每次输入下一部分数据的时候如果第一个文件结束了就用下一个续上而已。。。 |
4
loqixh 2015-12-08 14:40:41 +08:00 1
查了下, php 是这样, 5.5 以上 crypto.createHash('md5').update("123456")
|
5
h4x3rotab 2015-12-08 16:20:44 +08:00 via iPhone
cat *.txt | md5 > output.txt
|
6
h4x3rotab 2015-12-08 16:21:40 +08:00 via iPhone
我错了,没看是 php 版。那就是 update 了。
|
7
xing393939 OP 感谢,已找到方法
|
8
xing393939 OP $ctx = hash_init('md5');
foreach ($array as $fileArr) { hash_update_file($ctx, "{$dir}/{$fileArr[0]}"); } return hash_final($ctx); |
9
likebeta 2015-12-08 18:48:11 +08:00
貌似不行吧, 和文件时间也有关系吧, 合并后时间变化了
|
13
50vip 2015-12-08 19:52:32 +08:00
可以的, update 就可以了, http://www.atool.org/file_hash.php 这个使用 js worker 做的,也是每次都一部分进行计算,以节约内存。
|
14
wizardoz 2015-12-08 20:44:33 +08:00
如果文件只是简单的连接,那么不合并计算和合并计算是一样的。
md5 算法是支持流输入的。 |