不幸的是,我在数据库中有明文密码。我想尽可能少地传递这些纯文本值,例如比较和更新。为此,我试图创建一个排除明文密码的用户表视图,而是提供该密码的哈希值。
这是我当前的 SQL Server 视图,它不起作用:
SELECT CAST(CAST(32768 * RAND() AS INT) AS NVARCHAR) AS PasswordSalt
HashBytes('SHA1', PasswordSalt + u.Password) AS PasswordHash
FROM dbo.Users AS u
我很高兴听到这种方法的替代方案,但除此之外,问题似乎是将虚拟列PasswordSalt与..任何东西连接起来。例如,以下简单视图有效:
SELECT u.Login AS Column1, u.Login + 'b' AS Column2
但是这个没有:
SELECT u.Login AS Column1, Column1 + 'b' AS Column2
我从 Management Studio 收到的错误是
列名“Column1”无效。
提前感谢您对我做错了什么的任何想法!