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

cho*_*obo 2 t-sql sql-server 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);
Run Code Online (Sandbox Code Playgroud)

Rem*_*anu 9

简单地投下它:

select cast(hashbytes('md5','foo') as uniqueidentifier)
Run Code Online (Sandbox Code Playgroud)

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

  • 为什么要把HASHBYTES投入guid?为什么不使用适当的存储类型,即BINARY(16)
  • 我希望你知道MD5哈希密码基本没用,对吧?因为彩虹表.您需要使用安全哈希方案,如HMACDigestHA1.