HashBytes를 VarChar로 변환
SQL Server 2005에서 존재하는 값의 MD5는 해시를 얻습니다. 다음 명령을 사용하여 하여이 작업을 수행합니다.
SELECT HashBytes('MD5', 'HelloWorld')
그러나 VarChar 값 대신 VarBinary를 반환합니다. 0x68E109F0F40CA72A15E05CC22786F8E6
이 VarChar 로 CHAPTER 2하려고 하면 há ðô§*à\Â'†øæ
대신에 68E109F0F40CA72A15E05CC22786F8E6
.
SQL 기반 솔루션이 있습니까?
다른 곳에서 해결을 찾았습니다.
SELECT SUBSTRING(master.dbo.fn_varbintohexstr(HashBytes('MD5', 'HelloWorld')), 3, 32)
SELECT CONVERT(NVARCHAR(32),HashBytes('MD5', 'Hello World'),2)
master.dbo.fn_varbintohexsubstring(0, HashBytes('SHA1', @input), 1, 0)
대신에 결과 master.dbo.fn_varbintohexstr
를 사용하십시오 substringing
.
실제로 내부적으로 fn_varbintohexstr
전화합니다 fn_varbintohexsubstring
. 첫 번째 인수 는 접두사 fn_varbintohexsubstring
로 추가할지 여부를 알려줍니다 0xF
. fn_varbintohexstr
전화 fn_varbintohexsubstring
로 1
internaly 첫 번째 인수로.
이 필요하지 않기 때문에 직접 0xF
전화하십시오 fn_varbintohexsubstring
.
David Knight의 말과 달리이 두 대안은 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))
따라서 2008 년부터 첫 번째가 더 나은 선택 인 것입니다.
convert(varchar(34), HASHBYTES('MD5','Hello World'),1)
(16 진수를 노드로 변환하기 위해 1)
12 개의 하위 계층으로 변환하여 상위의 시작 부분에서 0x를 하위 계층 제거하십시오.
substring(lower(convert(varchar(34), HASHBYTES('MD5','Hello World'),1)),3,32)
바이트를 공유로 변환 한 후 C #에서 얻는 것과 정확히 동일
SP 변수가있는 저장 프로 시저 내에서 다음 코드를 사용하는 개인적인 경험을 통해 문서화되지 않은 경우 조합은 예제에 따라 100 % 작동합니다.
@var=SUBSTRING(master.dbo.fn_varbintohexstr(HashBytes('SHA2_512', @SPvar)), 3, 128)
데이터 유형을 varbinary로 변경하면 가장 좋습니다.
참고 URL : https://stackoverflow.com/questions/2120/convert-hashbytes-to-varchar
'IT' 카테고리의 다른 글
순서가 오름차순이고 널이 마지막 필요하는 널 열에 의해 LINQ 순서 (0) | 2020.07.14 |
---|---|
ReactJS가 수동 클래스 이름에 동적 클래스 추가 (0) | 2020.07.14 |
현재 머큐리얼 리비전 해시를 인쇄 하시겠습니까? (0) | 2020.07.14 |
Maven에서 사용할 JDK 지정 (0) | 2020.07.14 |
기존 값보다 큰 값이 처음으로 나타남 (0) | 2020.07.14 |