如何在SQL存储过程中将varbinary转换为GUID?

时间:2011-04-04 19:10:56

标签: sql-server tsql stored-procedures

如何将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 个答案:

答案 0 :(得分:7)

简单地施展它:

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

但是有两个问题挥之不去:

  • 为什么要将HASHBYTES投入guid?为什么不使用适当的存储类型,即BINARY(16)
  • 我希望你知道MD5哈希密码基本没用,对吧?因为rainbow tables。您需要使用安全哈希方案,例如HMACHA1 of Digest