0

我正在使用 Microsoft 的 FCIV 实用程序来计算 xml 文件的 SHA1 哈希值。xml 文件会定期批量重新发布,但许多文件不会从一个版本更改为下一个版本。通过将新发布的文件的 SHA1 哈希值与先前发布的同一文件版本的存储哈希值进行比较,我可以确定文件是否已更改,从而避免重新处理未更改的文件。处理结果存储在 SQL Server 2017 表中。我将在该表中添加一列来存储 SHA1 哈希值。问题是“我应该为该列使用什么数据类型?”

FCIV 实用程序以 base64 编码格式输出 SHA1 哈希值,如下所示:

<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 个字符的区分大小写的字符串。

在我看来,在这种情况下,将 FCIV 输出的 SHA1 哈希值存储在具有区分大小写排序规则设置的 char(28) 列中是合适的。鉴于上述背景,这是最好的解决方案吗?

[我知道 Microsoft 不再支持 FCIV 并且 SHA1 不安全。但是我并不关心安全性——我所需要的只是合理的无冲突哈希值。]

4

0 回答 0