SAP HANA 에서 sql 작업을 하다가, 활용 가능한 function 을 찾기 위해 레퍼런스에서 함수목록을 쭈욱 훑어보았다.
정규표현식 관련 함수가 필요했는데 like_regexpr 을 발견했고 그 함수를 사용했다.
그런데 정보보안기사 공부중이라 눈에 들어온 것은 HASH_MD5 와 HASH_SHA256 함수였다.
정보기 실기 준비하며 다처단최엔 이라고 생각없이 두음으로 암기했었다.
https://it-freelancer.tistory.com/1400
MD5 와 SHA 비교는 다처단최엔 입니다.
다. 다이제스트 길이 128비트 160비트
처. 처리 단위 512비트 512비트
단. 단계수 64(16번의 4라운드) 80(20번의 4라운드)
최. 최대 메시지 크기 무한 2의 64승 마이너스(-)1
엔. 앤디언 Little-endian Big-endian
다이제스트 길이가 128비트 160비트라고 암기했는데, 암호화된 결과의 길이라고 짐작만하고 확인은 하지 않은 상태였다.
내 짐작이 맞았는지 확인해보자.
https://help.sap.com/docs/SAP_HANA_PLATFORM/4fe29514fd584807ac9f2a04f6754767/881159b167a246e88926075e0c59ea36.html
SELECT HASH_MD5(TO_BINARY('abcd'), '00', TO_BINARY('efg')) "test1" FROM DUMMY;
실행하면 다음 결과가 나온다고 되어있다.
6BB6BD45C57D57ECC69A9EB81F7409BE
DBeaver 에서 돌려 보니 이상하게 깨진 것 같은 문자가 나온다. to_nvarchar 로 감싸서 테스트를 해보았다.
SELECT to_nvarchar(HASH_MD5(TO_BINARY('abcd'), '00', TO_BINARY('efg'))) "test1" FROM DUMMY;
레퍼런스에 언급된 6BB6BD45C57D57ECC69A9EB81F7409BE 값이 나온다. 자릿수를 세어보면 32 자리다. 16진수 숫자이므로 한글자는 4비트다.
4비트 * 32 자리 = 128 비트
마구잡이로 외운 다이제스트 길이 128비트가 맞는 것 같다.
HASH_SHA256 은 동일한 방식으로 확인해보니 64자리 즉 256 비트다. HANA 에서 제공하는 함수에 HASH_SHA 또는 HASH_SHA512는 현재 버전에서는 없었다.
기냥 달달한 암기한 SHA 의 다이제스트 길이는 160 비트인데, 안전한 SHA256 이전 최초의 SHA 알고리즘 결과에 해당하는 길이로 보인다. 아쉽지만 HANA Sql 에서는 sha 함수를 제공하지 않아 눈으로 직접 확인하지는 못했다