Как преобразовать varbinary в GUID в хранимой процедуре TSQL? - PullRequest
2 голосов
/ 04 апреля 2011

как я могу преобразовать возвращаемое значение HASHBYTES в GUID?

Это то, что у меня есть.

CREATE PROCEDURE [dbo].[Login]
    @email nvarchar,
    @password varchar
AS
BEGIN
    DECLARE @passHashBinary varbinary; 
    DECLARE @newPassHashBinary varbinary;

    -- Create a unicode (utf-16) password
    Declare @unicodePassword nvarchar;
    Set @unicodePassword = CAST(@password as nvarchar); 

    SET @passHashBinary = HASHBYTES('md5', @password);
    SET @newPassHashBinary = HASHBYTES('md5', @unicodePassword);

1 Ответ

8 голосов
/ 04 апреля 2011

Просто бросьте его:

select cast(hashbytes('md5','foo') as uniqueidentifier)

Но есть два вопроса:

  • Почему бросили HASHBYTES в guid?Почему бы не использовать соответствующий тип для хранения, а именно BINARY(16)
  • Надеюсь, вы знаете, что пароли хеширования MD5 в основном бесполезны, верно?Из-за радужных столов .Вам необходимо использовать безопасную схему хеширования, например HMAC или HA1 из Digest .
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...