Security windows和Linux中文件的校验和相同吗?

Security windows和Linux中文件的校验和相同吗?,security,sha1,checksum,Security,Sha1,Checksum,我正在Mac和windows中为apk文件创建Sha1校验和。我在mac中使用相同的文件,而在mac中使用此文件 cat AppName.apk |openssl dgst -binary -sha1 | openssl base64 | tr '+/' '-_' |tr -d '=' // I get 7pF3C4YCqMHKXOzOep_DW1feJxE 在Windows中,我使用上面提到的各种方法,它们都生成相同的校验和 ee91770b8602a8c1ca5cecce7a9fc35b

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

cat AppName.apk |openssl dgst -binary -sha1 | openssl base64 | tr '+/' '-_' |tr -d '=' 
// I get 7pF3C4YCqMHKXOzOep_DW1feJxE
在Windows中,我使用上面提到的各种方法,它们都生成相同的校验和

ee91770b8602a8c1ca5cecce7a9fc35b57de2711

如果是同一个文件的sha1散列,为什么会有所不同?或者散列可以是这两者?我在这里感到困惑。有人能解释一下吗?

您在Mac上使用的命令确实在base64中对校验和进行编码,这在Windows上将校验和编码为十六进制数字时非常少见

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

shasum AppName.apk | sed -e 's/ .*//'
对sed的管道调用是可选的,只用于删除文件名,该文件名通常由shasum在校验和输出后添加

ee91770b8602a8c1ca5cecce7a9fc35b57de2711
您甚至可以通过从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上获得的校验和。

您在Mac上使用的命令在base64中对校验和进行编码,这在Windows上将校验和编码为十六进制数字时非常少见

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

shasum AppName.apk | sed -e 's/ .*//'
对sed的管道调用是可选的,只用于删除文件名,该文件名通常由shasum在校验和输出后添加

ee91770b8602a8c1ca5cecce7a9fc35b57de2711
您甚至可以通过从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上获得的校验和。

我不确定您在哪里找到了Mac命令,但您只需执行openssl sha1 AppName.apk即可。请看:我不确定这一点,但我个人不会用cat之类的东西来读取二进制文件。@Chris Thompson:openssl可以读取文件本身,也可以在二进制模式下读取。我更喜欢使用shasum而不是opensslsha1,因为后者对我来说似乎过于夸张了。shasum是Unix系统上的标准工具。@Matthia是的,我完全支持你。我指的是鲁布·戈德伯格式的命令,用于在Mac@ChrisThompson对不起,我读过头了你句子中的not。我不确定你在哪里找到了Mac命令,但你可以简单地执行openssl sha1 AppName.apk。请看:我不确定这一点,但我个人不会用cat之类的东西来读取二进制文件。@Chris Thompson:openssl可以读取文件本身,也可以在二进制模式下读取。我更喜欢使用shasum而不是opensslsha1,因为后者对我来说似乎过于夸张了。shasum是Unix系统上的标准工具。@Matthia是的,我完全支持你。我指的是鲁布·戈德伯格式的命令,用于在Mac@ChrisThompson对不起,我读得太多了,你的句子里没有。