【问题标题】:Sql Server 2005: what data type to use to store passwords hashed by SHA-256 algorithm?Sql Server 2005:使用什么数据类型来存储由 SHA-256 算法散列的密码?
【发布时间】:2010-09-20 02:40:03
【问题描述】:

在 Sql Server 2005 中应该使用什么数据类型来存储密码hashed by SHA-256 algorithm

数据为hashed by the application并传递到数据库

【问题讨论】:

  • 哈!,通过谷歌找到这个。

标签: sql-server encryption types passwords


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

      • 我在 char(44) 字段中存储为 base64。不像十六进制字符串那样浪费,并且具有彼得提到的优点。
      【解决方案4】:

      SHA-256 具有 256 位输出

      256 位 = 32 字节

      所以试试 varbinary(32)

      【讨论】:

        【解决方案5】:

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

        【讨论】:

          猜你喜欢
          • 2011-05-18
          • 2010-09-09
          • 2014-07-16
          • 1970-01-01
          • 2021-06-27
          • 2019-02-24
          • 2017-02-13
          • 2023-03-20
          相关资源
          最近更新 更多