답변:
CONVERT(VARCHAR(32), HashBytes('MD5', 'email@dot.com'), 2)
HashBytes 사용
SELECT HashBytes('MD5', 'email@dot.com')
그러면 0xF53BD08920E5D25809DF2563EF9C52B6
-
SELECT CONVERT(NVARCHAR(32),HashBytes('MD5', 'email@dot.com'),2)
그러면 F53BD08920E5D25809DF2563EF9C52B6
다른 답변 중 어느 것도 나를 위해 일하지 않았습니다. SQL Server는 하드 코딩 된 문자열을 전달하는 경우와 결과 집합의 열에서 공급하는 경우 다른 결과를 제공합니다. 아래는 SQL Server와 MySql을 완벽하게 일치시키는 데 도움이 된 마술입니다.
select LOWER(CONVERT(VARCHAR(32), HashBytes('MD5', CONVERT(varchar, EmailAddress)), 2)) from ...
LOWER()
은 대소 문자를 구분하는 경우에만 필요합니다.
MD5
와 비교하여 동일한 해시를 제공합니다 . 궁금 이유였다 에서 hashs의 다릅니다 및 . 레시피 주셔서 감사합니다 ..MD5()
Postgresql
MD5
Python
Postgresql
declare @hash nvarchar(50)
--declare @hash varchar(50)
set @hash = '1111111-2;20190110143334;001' -- result a5cd84bfc56e245bbf81210f05b7f65f
declare @value varbinary(max);
set @value = convert(varbinary(max),@hash);
select
SUBSTRING(sys.fn_sqlvarbasetostr(HASHBYTES('MD5', '1111111-2;20190110143334;001')),3,32) as 'OK'
,SUBSTRING(sys.fn_sqlvarbasetostr(HASHBYTES('MD5', @hash)),3,32) as 'ERROR_01'
,SUBSTRING(sys.fn_sqlvarbasetostr(HASHBYTES('MD5',convert(varbinary(max),@hash))),3,32) as 'ERROR_02'
,SUBSTRING(sys.fn_sqlvarbasetostr(sys.fn_repl_hash_binary(convert(varbinary(max),@hash))),3,32)
,SUBSTRING(sys.fn_sqlvarbasetostr(master.sys.fn_repl_hash_binary(@value)),3,32)