반응형
해시를 저장하기 위해 어떤 종류의 데이터 유형을 사용해야 합니까?
SQL Server의 데이터 유형에 따라 해시가 달라지는 것으로 알고 있습니다.하나는 유니코드를 지원하지만 다른 하나는 지원하지 않습니다... ... 등(또한 조합).
데이터 타입으로 char(32)를 사용하고 있는데 출력이 이상합니다.사용
select HASHBYTES('MD5','MD5Text')
는 다음과 같은 출력을 제공합니다.
0xA891DB2DA259280A66FD5F35201CAB6A
그리고 언제
declare @h char(32)
select @h=HASHBYTES('MD5','MD5Text')
select @h,LEN(@h)
출력:
ё'ў-эY(f«_5ыj)
그래서 저는 SQL Server가 처음입니다.
해시를 저장할 때 어떤 데이터 유형을 사용해야 하는지 알려주실 수 있나요?
데이터 유형을 사용해야 합니다.사용할 수 있습니다.binary
대신에varbinary
왜냐하면 해시 함수는 항상 동일한 유형의 해시에 대해 동일한 수의 바이트를 반환하기 때문입니다(예:MD5
,SHA1
등).이렇게 하면 가변 길이 이진수를 관리하는 데 필요한 (약간의) 오버헤드를 줄일 수 있습니다.varbinary
) 열.
생성할 크기와 관련하여 다음 쿼리를 실행하여 각 해시 유형의 길이를 확인할 수 있습니다.
SELECT DATALENGTH(HASHBYTES('MD2', 'Testing')) AS [MD2Length],
DATALENGTH(HASHBYTES('MD4', 'Testing')) AS [MD4Length],
DATALENGTH(HASHBYTES('MD5', 'Testing')) AS [MD5Length],
DATALENGTH(HASHBYTES('SHA', 'Testing')) AS [SHALength],
DATALENGTH(HASHBYTES('SHA1', 'Testing')) AS [SHA1Length],
/* 2012 only: */
DATALENGTH(HASHBYTES('SHA2_256', 'Testing')) AS [SHA2_256Length],
DATALENGTH(HASHBYTES('SHA2_512', 'Testing')) AS [SHA2_512Length];
그리고 이것은 다음과 같이 밝혀져야 합니다.
MD2Length MD4Length MD5Length SHALength SHA1Length SHA2_256Length SHA2_512Length
--------- --------- --------- --------- ---------- -------------- --------------
16 16 16 20 20 32 64
언급URL : https://stackoverflow.com/questions/14722305/what-kind-of-datatype-should-one-use-to-store-hashes
반응형
'source' 카테고리의 다른 글
작업입니다.ASP.NET MVC 웹 응용 프로그램에서 잘못된 것으로 간주되는 관행을 실행하시겠습니까? (0) | 2023.07.06 |
---|---|
확인하지 못했습니다. com.google.파이어베이스:파이어베이스-코어:11.2.0 (0) | 2023.07.06 |
vimdiff를 사용하여 모든 'gitdiff' 보기 (0) | 2023.07.06 |
IIS7 - 요청 필터링 모듈이 요청 내용 길이를 초과하는 요청을 거부하도록 구성되었습니다. (0) | 2023.07.06 |
SharePoint 사이트에서 Excel 파일 열기 (0) | 2023.07.06 |