我有一个用于以明文形式存储用户密码的网站的 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/