Nice programing

해시를 저장하려면 어떤 종류의 데이터 유형을 사용해야합니까?

nicepro 2020. 12. 28. 22:33
반응형

해시를 저장하려면 어떤 종류의 데이터 유형을 사용해야합니까?


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

반응형