К сожалению, у меня есть незашифрованные пароли в базе данных. Я хочу передать эти значения открытого текста как можно меньше для, скажем, сравнений и обновлений. С этой целью я пытаюсь создать представление моей таблицы «Пользователи», которая исключает пароли в виде открытого текста и вместо этого предоставляет хешированное значение этого пароля.
Вот мое текущее представление 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'.
Заранее спасибо за любые идеи о том, что я делаю неправильно!