我试图生成字符串“hello”的MD5总和(使用 md5sum)。我尝试了不同的方法,如 Linux 中的 md5sum 工具、PHP 的 MD5() 函数以及各种在线文本到 md5sum 转换器。
echo "hello" | md5sum
Run Code Online (Sandbox Code Playgroud)
和
echo "hello" > file && md5sum file
Run Code Online (Sandbox Code Playgroud)
给出了结果b1946ac92492d2347c6235b4d2611184
。但是,PHP 的 md5() 函数和几乎所有在线生成器都给出了输出5D41402ABC4B2A76B9719D911017C592
.
是什么原因?
网站上的下载有时具有 MD5 校验和,允许人们确认文件的完整性。我听说这不仅可以让损坏的文件在它们引起问题之前被立即识别,而且可以轻松检测到任何恶意更改。
就文件损坏而言,我遵循逻辑,但如果有人故意想要上传恶意文件,那么他们可以生成相应的 MD5 校验和并将其与更改的文件一起发布在下载站点上。这会欺骗任何下载文件的人认为它没有被更改。
如果无法知道校验和本身是否已被破坏,MD5 校验和如何提供任何保护以防止故意更改文件?
当使用md5sum
来验证文件的完整性,准确度如何处理?
经过验证的 MD5 是否意味着每个位都完全相同,还是在 MD5 中反映二进制更改之前必须打破阈值?
任何有关如何生成 md5 的文档也将不胜感激。
有几篇关于在各种 Windows 平台上为文件和/或文件夹生成 MD5 总和的帖子。然而,这些都不适合我。我试过:
CertUtil -hashfile myFileName MD5
返回“访问被拒绝”(我cmd
以管理员权限运行),在这一点上,我开始有点绝望了。请注意,我使用的是 Windows 7 x64。
有关信息,如果可能的话,我试图找到一个工具,可以在 Linux 中允许这样的事情:
find DIR -type f -exec md5sum {} \; | sort -k 2 | md5sum
Run Code Online (Sandbox Code Playgroud) 我正在尝试查找所有重复文件(基于 MD5 哈希)并按文件大小排序。到目前为止,我有这个:
find . -type f -print0 | xargs -0 -I "{}" sh -c 'md5sum "{}" | cut -f1 -d " " | tr "\n" " "; du -h "{}"' | sort -h -k2 -r | uniq -w32 --all-repeated=separate
Run Code Online (Sandbox Code Playgroud)
这个的输出是:
1832348bb0c3b0b8a637a3eaf13d9f22 4.0K ./picture.sh
1832348bb0c3b0b8a637a3eaf13d9f22 4.0K ./picture2.sh
1832348bb0c3b0b8a637a3eaf13d9f22 4.0K ./picture2.s
d41d8cd98f00b204e9800998ecf8427e 0 ./test(1).log
Run Code Online (Sandbox Code Playgroud)
这是最有效的方法吗?
我想知道如何从当前目录中的文件(超过指定大小的文件)创建一个包含 md5sums 的列表。我可以做一个或另一个,但我不知道如何将两者结合起来。
你能告诉我为什么吗
tar czf archive.tar dir
Run Code Online (Sandbox Code Playgroud)
每次都用不同的哈希创建存档(我用'md5sum'检查)没有压缩参数 -z 或参数 -j 而一切正常。谢谢
我想在 unix/linux 中对大文件和流进行校验和,我想从文件/流的每个大部分,每 1 MB 或每 10 MB 中获得许多校验和。
例如,我有磁盘映像、压缩磁盘映像和原始磁盘的副本。图片的某些部分可能会被修改。磁盘为 50 GB,大约有 50000 个 1 MB 的块。因此,对于每个文件,我想获得 50 000 md5sum 或 sha1sums 以获得修改的概述。单个 md5sum 不会帮助我找到修改偏移量。
对于未压缩的磁盘映像,此任务很容易,在 bash 中使用循环dd
工具for
计算偏移量并选择(跳过)文件的每 1MB 部分。与磁盘相同:
for a in `seq 1 50000`; do echo -n "$a: "; dd if=image.src bs=1M count=1 skip=$a | md5sum; done
Run Code Online (Sandbox Code Playgroud)
但是现在我想比较压缩图像和未压缩图像而不将其解压缩到磁盘。我7z
有解包器,它可以将图像以高达 150-200 MB/s(选项7z e -so image.7z |
)的速度解压到标准输出。但是我可以在|
符号后面写什么来获得所有文件部分的 md5sum。
有两个包,里面有一个文件。
\n[root@build-production test]# ll\ndrwxr-xr-x. 2 root root 19 9\xe6\x9c\x88 18 07:58 pack1\ndrwxr-xr-x. 2 root root 19 9\xe6\x9c\x88 18 07:58 pack2\n[root@build-production test]# ll pack1\n-rw-r--r--. 1 root root 2 9\xe6\x9c\x88 18 07:58 file1\n[root@build-production test]# ll pack2\n-rw-r--r--. 1 root root 2 9\xe6\x9c\x88 18 07:58 file2\n
Run Code Online (Sandbox Code Playgroud)\n并且文件具有相同的md5。
\n[root@build-production test]# md5sum pack1/file1 pack2/file2\nb026324c6904b2a9cb4b88d6d61c81d1 pack1/file1\nb026324c6904b2a9cb4b88d6d61c81d1 pack2/file2\n
Run Code Online (Sandbox Code Playgroud)\n但是当我使用下面的命令压缩每个包时,它们的 tarball 的 md5 有所不同。
\nroot@build-production test]# GZIP=-n tar zchf pack1.tar.gz pack1 --mtime=\'2023-01-01 00:00:00\'\n[root@build-production test]# GZIP=-n tar zchf pack2.tar.gz pack2 --mtime=\'2023-01-01 00:00:00\'\n[root@build-production test]#\n[root@build-production test]# md5sum …
Run Code Online (Sandbox Code Playgroud)