我的问题仅是关于文件哈希,而不是一般的哈希函数。我的假设是文件校验和/散列的值不区分大小写。我担心的是,我找不到任何在线文档来确认这一点。我只有以下两点可以支持我的主张。
此链接包含一些文件哈希值。它们都不包含任何大写字母。 https://www.virtualbox.org/download/hashes/6.1.2/SHA256SUMS
当我使用Powershell Get-FileHash cmdlet时,所有返回值均为大写。 https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/get-filehash?view=powershell-7
[谁能帮助我确认我的假设,并提供有关Windows和Linux OS中文件的一些文档?
我的问题仅是关于文件哈希,而不是一般的哈希函数。我的假设是文件校验和/散列的值不区分大小写。
哈希是字节序列,它们根本没有大小写。
散列通常以十六进制表示的编码用于显示,对于这六个“字母”(a至f)可以是任意一种情况。尽管我知道系统在遇到“错误”的情况时确实反对(多数人只能接受小写字母,其他人只能接受大写字母),但这主要是样式问题。
还请注意,例如在大小写相关的情况下,将散列存储或显示为base64并不是闻所未闻的。不知道您要问的是[[why
(例如,它是闲置的沉思,还是您有实际用例),很难完全分类地回答。十六进制常量由前缀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位整数。