在 Sql Server 2005 中,应该使用哪种数据类型来存储由 SHA-256 算法散列的密码?
数据由应用程序散列并传递到数据库
在 Sql Server 2005 中,应该使用哪种数据类型来存储由 SHA-256 算法散列的密码?
数据由应用程序散列并传递到数据库
在这种情况下,我更喜欢将哈希码转换为十六进制字符串,如果您喜欢“”-前缀,则使用 varchar(64) 或 varchar(66) 0x
。通过这种方式,手动比较或(重新)设置您必须从其他地方复制/粘贴的值要容易得多。例如,您丢失了管理员密码并想通过 SQL 重置它...
varbinary(32) 或二进制 (32)。
SHA256Managed 类的“Hash”属性是一个字节数组,HashSize 是 256 位,所以我相信二进制(32)是最简单的。
您也可以使用 ToBase64Transform 将其放入 varchar 字段中。我对 Base64 算法并不完全熟悉,但似乎您可能需要至少 43 个字符来表示 base 64 中的 256 位数字。IIRC Base64 使用几个填充字符,所以我可能会把它放在varchar(50) 只是为了安全。
应该产生一个 32 字节的值(256 位),所以 binary(32) 应该可以工作。
SHA-256 具有 256 位输出
256 位 = 32 字节
所以试试 varbinary(32)