【问题标题】:Are Checksums for a file same in windows and Linux?Windows和Linux中文件的校验和是否相同?
【发布时间】:2015-09-29 15:20:05
【问题描述】:

我正在为 Mac 和 windows 中的 apk 文件创建 Sha1 校验和。我在mac中使用相同的文件我使用这个

cat AppName.apk |openssl dgst -binary -sha1 | openssl base64 | tr '+/' '-_' |tr -d '=' 
// I get 7pF3C4YCqMHKXOzOep_DW1feJxE

在 Windows 中,我使用here 提到的各种方法,它们都生成相同的校验和。

ee91770b8602a8c1ca5cecce7a9fc35b57de2711

如果是同一个文件的sha1 hash,为什么会不一样呢?或者哈希可以是这两者?我在这里很困惑。谁能解释一下?

【问题讨论】:

  • 我不确定您在哪里找到了 Mac 命令,但您可以简单地执行 openssl sha1 AppName.apk。见:support.apple.com/en-us/HT201259
  • 对此我不确定,但我个人不会使用 cat 之类的东西来读取二进制文件。
  • @Chris Thompson:openssl 可以读取文件本身,并且也可以在二进制模式下读取。我更喜欢使用shasum 而不是openssl sha1 <file>,因为后者对我来说似乎被夸大了。 shasum 是 Unix 系统上的标准工具。
  • @MatthiasWimmer 是的,我完全支持你。 “这个”是指在 Mac 上使用 Rube Goldberg 式的命令
  • @ChrisThompson 对不起,我看错了你句子中的“不”。

标签: security sha1 checksum


【解决方案1】:

您在 Mac 上使用的命令确实将校验和编码为 base64(这非常罕见),而在 Windows 上您将校验和编码为十六进制数字。

您可以使用 OS X 的 shasum 命令在文件上创建 SHA-1 校验和:

shasum AppName.apk | sed -e 's/ .*//'

(对 sed 的管道调用是可选的,仅用于删除通常由 shasum 在校验和输出后添加的文件名。)

您甚至可以通过从 Base64 转码到 Hex 来验证两个平台计算的校验和基本相同,只是对其进行了不同的编码:

echo 7pF3C4YCqMHKXOzOep_DW1feJxE= | base64 -D| hexdump

结果:

0000000 ee 91 77 0b 86 02 a8 c1 ca 5c ec ce 7a 9f c3 5b
0000010 57 de 27 11

你在 Windows 上得到的校验和是什么。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-16
    • 2011-09-16
    • 1970-01-01
    • 1970-01-01
    • 2016-03-30
    • 2011-07-20
    • 1970-01-01
    相关资源
    最近更新 更多