복붙노트

[SQL] 에서 VARCHAR 변환 HashBytes

SQL

에서 VARCHAR 변환 HashBytes

나는 다음과 같은 명령을 사용하여이 작업을 수행 할 SQL 서버 2005의 문자열 값의 MD5 해시를 얻으려면 :

SELECT HashBytes('MD5', 'HelloWorld')

그러나이 VARBINARY 대신이 포함 된 VARCHAR 값을 반환합니다. 나는이 포함 된 VARCHAR I에 0x68E109F0F40CA72A15E05CC22786F8E6 변환하려고하면 얻을 하 ðô§ * à \ Â '† OAE 대신 68E109F0F40CA72A15E05CC22786F8E6의.

어떤 SQL 기반 솔루션이 있습니까?

해결법

  1. ==============================

    1.나는 다른 해결책을 발견했습니다 :

    나는 다른 해결책을 발견했습니다 :

    SELECT SUBSTRING(master.dbo.fn_varbintohexstr(HashBytes('MD5', 'HelloWorld')), 3, 32)
    
  2. ==============================

    2.

    SELECT CONVERT(NVARCHAR(32),HashBytes('MD5', 'Hello World'),2)
    
  3. ==============================

    3.사용 master.dbo.fn_varbintohexsubstring (0, HashBytes ( 'SHA1', @input), 1, 0) 대신 master.dbo.fn_varbintohexstr 후 결과를 substringing.

    사용 master.dbo.fn_varbintohexsubstring (0, HashBytes ( 'SHA1', @input), 1, 0) 대신 master.dbo.fn_varbintohexstr 후 결과를 substringing.

    사실 fn_varbintohexstr 내부적으로 fn_varbintohexsubstring 호출합니다. fn_varbintohexsubstring의 첫 번째 인수는 접두사 또는하지 0xF입니다을 추가한다는 뜻입니다. internaly 첫 번째 인수로 1 fn_varbintohexsubstring fn_varbintohexstr 전화.

    당신이 0xF입니다 필요하지 않기 때문에, 호출은 직접 fn_varbintohexsubstring.

  4. ==============================

    4.데이비드 나이트의 말씀과는 달리,이 두 가지 대안 2008 MS SQL에서 같은 응답을 반환 :

    데이비드 나이트의 말씀과는 달리,이 두 가지 대안 2008 MS SQL에서 같은 응답을 반환 :

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

    첫 번째는 2008 버전부터, 더 나은 선택입니다 같은 것 같습니다.

  5. ==============================

    5.

    convert(varchar(34), HASHBYTES('MD5','Hello World'),1)
    

    (1 문자열을 16 진수로 변환)

    낮추고 문자열로 문자열의 시작부터 0X 제거하려면이 변환 :

    substring(lower(convert(varchar(34), HASHBYTES('MD5','Hello World'),1)),3,32)
    

    우리가 문자열로 바이트를 변환 한 후 C #으로 무엇을 얻을 정확히 같은

  6. ==============================

    6.이 조합 내 예에 따라 100 % 작동 문서화되지 않은 있지만, 내가 확인할 수있는 SP 변수 해시 저장 프로 시저 내에서 다음 코드를 사용하여 개인의 경험을 가진 :

    이 조합 내 예에 따라 100 % 작동 문서화되지 않은 있지만, 내가 확인할 수있는 SP 변수 해시 저장 프로 시저 내에서 다음 코드를 사용하여 개인의 경험을 가진 :

    @var=SUBSTRING(master.dbo.fn_varbintohexstr(HashBytes('SHA2_512', @SPvar)), 3, 128)
    
  7. ==============================

    7.VARBINARY에 대한 데이터 유형을 변경하면 나를 위해 최선을 작동하는 것 같다.

    VARBINARY에 대한 데이터 유형을 변경하면 나를 위해 최선을 작동하는 것 같다.

  8. from https://stackoverflow.com/questions/2120/convert-hashbytes-to-varchar by cc-by-sa and MIT license