Является ли значение хэширования / контрольной суммы файла нечувствительным к регистру? - PullRequest
1 голос
/ 23 января 2020

Мой вопрос касается только хеширования файлов, а не функции хеширования в целом. Я предполагаю, что значение контрольной суммы / хэширования файла не зависит от регистра. Меня беспокоит то, что я не могу найти онлайн-документацию, подтверждающую это. Я получил только два следующих пункта в поддержку своей заявки.

  1. Эта ссылка содержит некоторые значения файла ha sh. Ни один из них не содержит заглавных букв. https://www.virtualbox.org/download/hashes/6.1.2/SHA256SUMS

  2. Когда я использую командлет Powershell Get-FileHa sh, все возвращаемые значения являются заглавными. https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/get-filehash?view=powershell-7

Может ли кто-нибудь помочь мне подтвердить мое предположение и предоставить некоторую документацию по файлам в Windows, а также в Linux ОС?

Ответы [ 2 ]

2 голосов
/ 23 января 2020

Мой вопрос касается только хеширования файлов, а не функции хеширования в целом. Я предполагаю, что значение контрольной суммы файла / хэширования нечувствительно к регистру.

Хэши - это байтовые последовательности, у них вообще нет регистра.

Хэши обычно кодируется как шестнадцатеричный для отображения, для которого 6 "букв" (от a до f) могут быть в любом случае. В основном это проблема стиля, хотя я знаю систему, которая возражала при получении «неправильного» регистра (некоторые принимают только строчные, другие - только прописные).

Также имейте в виду, что, например, хранить или показывать хеши как base64, где регистр имеет значение Не зная , почему вы спрашиваете (например, не заняты ли вы, или у вас есть реальный вариант использования), трудно ответить полностью категорически.

1 голос
/ 23 января 2020

Хеши и контрольные суммы часто представлены в шестнадцатеричном обозначении. Хотя обычно используется верхний регистр A-F вместо нижнего регистра a-f, это не имеет никакого значения.

Что касается справки, вопрос настолько базовый c, что его трудно найти solid ссылка. Одним из них является стандарт ISO / IEC 9899 для языка программирования C:

Шестнадцатеричная константа состоит из префикса 0x или 0X, за которым следует последовательность десятичных цифр и букв a (или A) - f (или F) со значениями от 10 до 15 соответственно.

В некоторых случаях использования, таких как CSS строчные буквы могут быть предпочтительными, так как более приятно читать среди других строчных букв. . Net s Int32.ToString поддерживает стандартные форматы чисел c. x для нижнего регистра, X для верхнего регистра.

В System.Convert есть ToInt32 , который преобразует значения из одной базы в 32-битные целые числа. Посмотрим, как в разных случаях hex di git AA преобразуется в десятичное. Например,

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

Каждая комбинация букв и букв представляет одно и то же десятичное значение 170. Не пытайтесь использовать это для хешей, поскольку они обычно больше 32-битных целых.

...