Как получить запись в SQL с помощью следующего варианта использования
У меня есть вариант использования, в котором я должен получить последние пять паролей из таблицы passwordhistory, и там два столбца один md5 зашифрован, а второй-хэш, после извлечения пяти записей я должен сравнить эти столбцы с новым паролем, после перемещения их из md5 и хэш-функции, если какая-либо запись найдена, то вернуть true, иначе вернуть false.
Что я уже пробовал:
DECLARE @UserID INT = 6 DECLARE @Password NVARCHAR(200)='admin1952' SELECT * FROM ( SELECT TOP 5 ChangedPassword AS ChangedPassword , PasswordChangeHistory.Password_Hash AS Password_Hash FROM PasswordChangeHistory WITH ( NOLOCK ) INNER JOIN [User] U WITH ( NOLOCK ) ON PasswordChangeHistory.UserID = U.Id WHERE PasswordChangeHistory.UserID = @UserID ) AS result WHERE PasswordChangeHistory.ChangedPassword = dbo.Encrypt_MD5(@Password) OR PasswordChangeHistory.Password_Hash = dbo.Encrypt_SHA2(@Password)
Maciej Los
А проблема вот в чем...
vivvicks
можно ли вставить сюда данные обеих таблиц?
kosmas kafataridis
Если я правильно вас понял вам нужно заказать свой подзапрос по дате desc и если у вас есть две функции это нормально иначе я бы зашифровал пароль на моей программе а затем использовал его примерно так
Объявить @UserID INT = 6
Объявить @Password_md5 NVARCHAR(200)= 'xyz'
Объявите @Password_sha2 NVARCHAR(200)= 'zyx'
Выберите случай, когда count (*)=0, затем 0 else 1 end isoldpass
ИЗ (ВЫБЕРИТЕ ТОП-5
ChangedPassword как ChangedPassword ,
PasswordChangeHistory.Функция password_hash как функцию password_hash
Из PasswordChangeHistory с ( NOLOCK )
INNER JOIN [User] U WITH (NOLOCK) ON PasswordChangeHistory.Идентификатор = Идентификатор У.
Где PasswordChangeHistory.UserID = @UserID order by somedate desc
) В результате
Где PasswordChangeHistory.ChangedPassword = @Password_md5
Или PasswordChangeHistory.Функция Password_hash = @Password_sha2
или
Объявить @UserID INT = 6
DECLARE @Password NVARCHAR(200)= 'admin1952'
Выберите случай, когда count (*)=0, затем 0 else 1 end isoldpass
ИЗ (ВЫБЕРИТЕ ТОП-5
ChangedPassword как ChangedPassword ,
PasswordChangeHistory.Функция password_hash как функцию password_hash
Из PasswordChangeHistory с ( NOLOCK )
INNER JOIN [User] U WITH (NOLOCK) ON PasswordChangeHistory.Идентификатор = Идентификатор У.
Где PasswordChangeHistory.UserID = @UserID order by somedate desc
) В результате
Где PasswordChangeHistory.ChangedPassword = dbo.Encrypt_MD5(@Пароль)
Или PasswordChangeHistory.Password_Hash = dbo.Encrypt_SHA2(@Пароль)
Richard Deeming
"в MD5 зашифрованном виде"
Нет.
MD5-это НЕ алгоритм шифрования. Это криптографический хэш-алгоритм. И не очень хороший - ни одна новая разработка не должна его использовать.
MD5-Википедия[^]