【发布时间】:2010-09-20 02:40:03
【问题描述】:
在 Sql Server 2005 中应该使用什么数据类型来存储密码hashed by SHA-256 algorithm?
数据为hashed by the application并传递到数据库
【问题讨论】:
-
哈!,通过谷歌找到这个。
标签: sql-server encryption types passwords
在 Sql Server 2005 中应该使用什么数据类型来存储密码hashed by SHA-256 algorithm?
数据为hashed by the application并传递到数据库
【问题讨论】:
标签: sql-server encryption types passwords
应该产生一个 32 字节的值(256 位),所以 binary(32) 应该可以工作。
【讨论】:
varbinary(32) 或二进制 (32)。
【讨论】:
SHA256Managed 类的“Hash”属性是一个字节数组,HashSize 是 256 位,所以我相信二进制 (32) 是最简单的。
您也可以使用 ToBase64Transform 将其放入 varchar 字段中。我对 Base64 算法并不完全熟悉,但似乎您可能需要至少 43 个字符来表示 base 64 中的 256 位数字。IIRC Base64 使用几个填充字符,所以我可能会把它放在varchar(50) 只是为了安全。
【讨论】:
SHA-256 具有 256 位输出
256 位 = 32 字节
所以试试 varbinary(32)
【讨论】:
如果您喜欢“0x”前缀,我更喜欢将哈希码转换为十六进制字符串,在这种情况下,varchar(64) 可以解决问题,或者 varchar(66)。通过这种方式,手动比较或(重新)设置您必须从其他地方复制/粘贴的值要容易得多。例如,您丢失了管理员密码并想通过 SQL 重置它...
【讨论】: