15

在 Sql Server 2005 中,应该使用哪种数据类型来存储由 SHA-256 算法散列的密码?

数据由应用程序散列并传递到数据库

4

5 回答 5

13

在这种情况下,我更喜欢将哈希码转换为十六进制字符串,如果您喜欢“”-前缀,则使用 varchar(64) 或 varchar(66) 0x。通过这种方式,手动比较或(重新)设置您必须从其他地方复制/粘贴的值要容易得多。例如,您丢失了管理员密码并想通过 SQL 重置它...

于 2008-10-30T23:49:35.850 回答
4

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

于 2008-10-30T23:41:52.450 回答
4

SHA256Managed 类的“Hash”属性是一个字节数组,HashSize 是 256 位,所以我相信二进制(32)是最简单的。

您也可以使用 ToBase64Transform 将其放入 varchar 字段中。我对 Base64 算法并不完全熟悉,但似乎您可能需要至少 43 个字符来表示 base 64 中的 256 位数字。IIRC Base64 使用几个填充字符,所以我可能会把它放在varchar(50) 只是为了安全。

于 2008-10-30T23:47:10.053 回答
2

应该产生一个 32 字节的值(256 位),所以 binary(32) 应该可以工作。

于 2008-10-30T23:41:13.200 回答
1

SHA-256 具有 256 位输出

256 位 = 32 字节

所以试试 varbinary(32)

于 2008-10-30T23:49:04.807 回答