Convert HashBytes to VarChar

前端 未结 7 726
南旧
南旧 2020-12-07 10:08

I want to get the MD5 Hash of a string value in SQL Server 2005. I do this with the following command:

SELECT HashBytes(\'MD5\', \'HelloWorld\')
相关标签:
7条回答
  • 2020-12-07 10:41

    I have found the solution else where:

    SELECT SUBSTRING(master.dbo.fn_varbintohexstr(HashBytes('MD5', 'HelloWorld')), 3, 32)
    
    0 讨论(0)
  • 2020-12-07 10:49
    SELECT CONVERT(NVARCHAR(32),HashBytes('MD5', 'Hello World'),2)
    
    0 讨论(0)
  • 2020-12-07 10:52

    With personal experience of using the following code within a Stored Procedure which Hashed a SP Variable I can confirm, although undocumented, this combination works 100% as per my example:

    @var=SUBSTRING(master.dbo.fn_varbintohexstr(HashBytes('SHA2_512', @SPvar)), 3, 128)
    
    0 讨论(0)
  • 2020-12-07 10:54

    Changing the datatype to varbinary seems to work the best for me.

    0 讨论(0)
  • 2020-12-07 10:58

    Use master.dbo.fn_varbintohexsubstring(0, HashBytes('SHA1', @input), 1, 0) instead of master.dbo.fn_varbintohexstr and then substringing the result.

    In fact fn_varbintohexstr calls fn_varbintohexsubstring internally. The first argument of fn_varbintohexsubstring tells it to add 0xF as the prefix or not. fn_varbintohexstr calls fn_varbintohexsubstring with 1 as the first argument internaly.

    Because you don't need 0xF, call fn_varbintohexsubstring directly.

    0 讨论(0)
  • 2020-12-07 11:00

    Contrary to what David Knight says, these two alternatives return the same response in MS SQL 2008:

    SELECT CONVERT(VARCHAR(32),HashBytes('MD5', 'Hello World'),2)
    SELECT UPPER(master.dbo.fn_varbintohexsubstring(0, HashBytes('MD5', 'Hello World'), 1, 0))
    

    So it looks like the first one is a better choice, starting from version 2008.

    0 讨论(0)
提交回复
热议问题