文件哈希/校验和值是否不区分大小写?

问题描述 投票:0回答:2

我的问题仅是关于文件哈希,而不是一般的哈希函数。我的假设是文件校验和/散列的值不区分大小写。我担心的是,我找不到任何在线文档来确认这一点。我只有以下两点可以支持我的主张。

  1. 此链接包含一些文件哈希值。它们都不包含任何大写字母。 https://www.virtualbox.org/download/hashes/6.1.2/SHA256SUMS

  2. 当我使用Powershell Get-FileHash cmdlet时,所有返回值均为大写。 https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/get-filehash?view=powershell-7

[谁能帮助我确认我的假设,并提供有关Windows和Linux OS中文件的一些文档?

powershell hash
2个回答
0
投票

我的问题仅是关于文件哈希,而不是一般的哈希函数。我的假设是文件校验和/散列的值不区分大小写。

哈希是字节序列,它们根本没有大小写。

散列通常以十六进制表示的编码用于显示,对于这六个“字母”(a至f)可以是任意一种情况。尽管我知道系统在遇到“错误”的情况时确实反对(多数人只能接受小写字母,其他人只能接受大写字母),但这主要是样式问题。

还请注意,例如在大小写相关的情况下,将散列存储或显示为base64并不是闻所未闻的。不知道您要问的是[[why

(例如,它是闲置的沉思,还是您有实际用例),很难完全分类地回答。
[哈希和校验和通常以hexadecimal表示法表示。尽管通常使用大写字母A-F代替小写字母a-f,但这没有任何区别。
作为参考,这个问题是如此基础,以至于很难找到可靠的参考。一种是用于C编程语言的ISO / IEC 9899标准:

十六进制常量由前缀0x或0X组成,后跟一个十进制数字和字母a(或A)至f(或F)的值分别为10到15。

在某些使用情况下,例如CSS小写字母可能是首选,因为在其他小写字母中阅读起来会更令人愉悦。 .Net的Int32.ToString支持标准数字格式器。 x用于小写,X用于大写。

在System.Convert中,有ToInt32会将值从一个基数转换为32位整数。让我们看看在不同情况下十六进制数字AA如何转换为十进制。像这样,

[convert]::toint32("aa", 16) 170 [convert]::toint32("AA", 16) 170 [convert]::toint32("aA", 16) 170 [convert]::toint32("Aa", 16) 170

每个字母大小写的组合都代表相同的十进制值170。但是,请勿在散列上尝试使用此值,因为散列通常大于32位整数。


0
投票
© www.soinside.com 2019 - 2024. All rights reserved.