SQL Server 2005:使用哪种数据类型存储由SHA-256算法哈希的密码?

16

1
哈!通过谷歌找到这个。 - dance2die
5个回答

13

在这种情况下,我更喜欢将哈希码转换为十六进制字符串。可以使用 varchar(64) 来完成相应的操作,或者如果你想要一个"0x"前缀的话,可以使用 varchar(66)。这样做可以更轻松地手动比较或(重新)设置你需要从其他地方复制/粘贴的值。例如,如果你忘记了管理员密码并想通过 SQL 重置它...


5

varbinary(32)或二进制(32)。


4
SHA256Managed类的“Hash”属性是一个字节数组,HashSize为256位,因此我认为二进制(32)可能是最简单的选择。
您还可以使用ToBase64Transform将其放入varchar字段中。我不完全熟悉Base64算法,但似乎您需要至少43个字符才能在base 64中表示256位数字。如果我没记错,Base64使用一些填充字符,所以我建议将其设置为varchar(50),以确保安全。

1
我将其存储为base64格式在char(44)字段中。这不像十六进制字符串那样浪费,并且具有Peter提到的优点。 - AlexDev

2

应该生成一个32字节的值(256位),所以使用binary(32)应该可以。


1

SHA-256的输出为256位

256位=32字节

因此,请尝试使用varbinary(32)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接