Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server FCIV输出的base64编码SHA1哈希值的SQL Server数据类型_Sql Server_Xml_Base64_Sha1_Fciv - Fatal编程技术网

Sql server FCIV输出的base64编码SHA1哈希值的SQL Server数据类型

Sql server FCIV输出的base64编码SHA1哈希值的SQL Server数据类型,sql-server,xml,base64,sha1,fciv,Sql Server,Xml,Base64,Sha1,Fciv,我正在使用Microsoft的FCIV实用程序计算xml文件的SHA1哈希值。xml文件会定期批量重新发布,但许多文件不会在一个版本到下一个版本之间更改。通过将新发布的文件的SHA1哈希值与同一文件先前发布版本的存储哈希值进行比较,我可以确定该文件是否已更改,从而避免重新处理未更改的文件。处理结果存储在SQL Server 2017表中。我将向该表添加一列以存储SHA1哈希值。问题是“我应该为该列使用什么数据类型?” FCIV实用程序以base64编码格式输出SHA1哈希值,如下所示: <

我正在使用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>

c:\test hash\test\u file1.xml
a+Q7DhN+0s4+ugp5rFwjzhAT4Sw=
c:\test hash\test\u file2.xml
R931jYktQJ0orCjSAvlh0ng3eis=
c:\test hash\test-file3.xml
V7rg/B8wUxwXX+D3M49oHAteVGw=
因此,输出SHA1哈希值是28个字符的区分大小写的字符串

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


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

您可以这样做。不过,二进制在内部会更快,因为您根本不关心排序规则,只需要简单的二进制比较。自从我的操作以来,我发现这表明blob是一种可行的方法,但我更喜欢你的建议,所以我将尝试二进制(20)。