Использование функции HASHBYTES() в Sql server2008
Я узнал, что Sql server2008 представляет HASHBYTES(), которые используют md5 для шифрования любой строки подобным образом Select HASHBYTES( 'md5', 'demo' )
и код, используемый для расшифровки таким образом
Select CONVERT(VARCHAR(MAX), HASHBYTES( 'md5', 'demo' ), 2)
но когда я пытаюсь это второе предложение выбора, оно показывает значение в зашифрованном формате. так как расшифровать демо как текст. Спасибо
1 ответ
Это один из способов хеширования; Вы не можете вернуть оригинальную форму. Невозможно расшифровать хеш. Какова цель, хотя?
если вы просто пытаетесь сравнить это значение хеша с каким-то другим, то вы можете сделать что-то вроде
IF HASHBYTES('md5', 'demo') = HASHBYTES('md5',@param)
PRINT 'Match!';
РЕДАКТИРОВАТЬ:
Хеширование не шифрует исходное значение вообще. Вместо этого, хеширование применяет односторонний математический алгоритм к исходному значению, в результате чего получается двоичное значение.
В основном используется для хранения пароля. поэтому пароль будет храниться в хеш-формате. Когда пользователь предоставляет учетные данные (идентификатор / пароль); он не расшифровывает сохраненный пароль; скорее, пароль, предоставленный пользователем, будет хешироваться с помощью того же алгоритма, и это значение хеш-функции будет сравниваться с сохраненным хеш-значением (как показано в примере кода выше)