Тип данных SQL Server для хеш-значений SHA1 в кодировке base64, выводимых FCIV - PullRequest
0 голосов
/ 30 сентября 2019

Я использую утилиту Microsoft FCIV для вычисления хеш-значений SHA1 для XML-файлов. XML-файлы периодически переиздаются партиями, но многие файлы не меняются от одного выпуска к другому. Сравнивая хеш-значение SHA1 во вновь выпущенном файле с сохраненным хеш-значением для ранее выпущенной версии того же файла, я могу определить, изменился ли файл, и, таким образом, избежать повторной обработки неизмененных файлов. Результаты обработки хранятся в таблице SQL Server 2017. Я добавлю столбец в эту таблицу для хранения хеш-значений SHA1. Вопрос в том, «какой тип данных мне следует использовать для этого столбца?»

Утилита FCIV выводит значения хеш-функции SHA1 в формате, закодированном в base64, например:

<FILE_ENTRY>
    <name>c:\test hash\test_file1.xml</name>
    <SHA1>a+Q7DhN+0s4+ugp5rFwjzhAT4Sw=</SHA1>
</FILE_ENTRY>
<FILE_ENTRY>
    <name>c:\test hash\test_file2.xml</name>
    <SHA1>R931jYktQJ0orCjSAvlh0ng3eis=</SHA1>
</FILE_ENTRY>
<FILE_ENTRY>
    <name>c:\test hash\test-file3.xml</name>
    <SHA1>V7rg/B8wUxwXX+D3M49oHAteVGw=</SHA1>
</FILE_ENTRY>

Итак, выводХеш-значения SHA1 представляют собой строки, чувствительные к регистру в 28 символов.

Мне кажется, что в этом случае было бы целесообразно сохранить хеш-значения SHA1, выводимые FCIV, в столбце char (28), имеющем регистр символов. чувствительная настройка сортировки. Это лучшее решение, учитывая вышеприведенный фон?

[Я знаю, что Microsoft больше не поддерживает FCIV и что SHA1 небезопасен. Однако я не беспокоюсь о безопасности - все, что мне нужно, это разумно свободные от коллизий хэш-значения.]

...