Использование функции 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!';

РЕДАКТИРОВАТЬ:

Хеширование не шифрует исходное значение вообще. Вместо этого, хеширование применяет односторонний математический алгоритм к исходному значению, в результате чего получается двоичное значение.

В основном используется для хранения пароля. поэтому пароль будет храниться в хеш-формате. Когда пользователь предоставляет учетные данные (идентификатор / пароль); он не расшифровывает сохраненный пароль; скорее, пароль, предоставленный пользователем, будет хешироваться с помощью того же алгоритма, и это значение хеш-функции будет сравниваться с сохраненным хеш-значением (как показано в примере кода выше)

Другие вопросы по тегам