반응형
해시를 저장하려면 어떤 종류의 데이터 유형을 사용해야합니까?
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
데이터 유형을 사용해야합니다 . 당신이 사용할 수있는 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
반응형
'Nice programing' 카테고리의 다른 글
socket.io 구독에서 구독을 취소하는 방법은 무엇입니까? (0) | 2020.12.28 |
---|---|
번 들러를 사용하여 gem을 다시 설치하는 방법 (0) | 2020.12.28 |
Unix에서 각 줄 끝의 문자를 제거하는 방법 (0) | 2020.12.28 |
Elixir의 ExUnit에서 하나의 테스트 만 실행할 수 있습니까? (0) | 2020.12.28 |
C #에서 확장 메서드를 사용할 때 오류 (0) | 2020.12.28 |