database - 如何就地转换 T-SQL 列类型和数据?

标签 database tsql

我有一个用于以明文形式存储用户密码的网站的 SQL Server 2005 数据库,我想对它们进行散列和加盐处理。我知道如何使用 HashBytes 函数来获取和比较哈希值,但我不知道转换现有密码列数据的最佳方法。它目前存储为 varchar(50) 列,我想使用 binary(20),因为我计划使用 SHA-1。

我正在考虑 SELECT INTO 一个临时表,ALTER 现有的列类型,然后 INSERT 散列和加盐密码回到用户 ID 匹配。这是一种有效的方法吗?有没有办法在没有临时表的情况下就地完成它?

谢谢!

最佳答案

你可以 store the binary info as a hex string .这有一些好处:

  • 允许简单的就地更新查询
  • 不需要临时表
  • 无需更改表的结构(您的最终结果是一个字符串)

我建议编写函数来帮助您进行加盐/哈希/十六进制转换(反之亦然。)

关于database - 如何就地转换 T-SQL 列类型和数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8095490/

相关文章:

sql - 如何返回在 SQL 中划分为多天的事件持续时间?

c# - ADO.NET SQL Server 性能 : multiple result sets vs. 多个命令执行

sql - 使用 MS SQL Identity 是一个好的做法吗?

database - 使用你正在散列的散列作为盐?

database - 是否应将冗余信息添加到数据库以确保任何产品更改都不会影响采购订单的输出

与 MS Access 相比,SQLite 非常慢

更改数据类型时MySQL锁等待超时

sql - 与层次顺序和缩进空间相关的查询

sql - 动态旋转表

unit-testing - 对 SQL 代码生成器进行单元测试