개요
Tibero6 FS06 환경에서 Varchar type 문자열 데이터를 hash 변환시, 최대 문자열의 크기는 4000 byte 입니다. 본 문서에서는 Varchar type 최대 크기인 65532 byte 까지 hash 변환 할 수 있는 방법에 대해 안내합니다.
방법
참고
아래와 같은 환경에서 테스트한 값을 예시로 안내합니다.
•
OS : Linux 64bit (RHEL7.4)
•
Tibero version : Tibero6 FS06 CS1709
1. Hash 변환시 최대 문자열 크기 확인 (4000 byte)
SQL> SELECT DBMS_CRYPTO.HASH(RPAD('A',4000,'B'),1) FROM DUAL;
DBMS_CRYPTO.HASH(RPAD('A',4000,'B'),1)
--------------------------------------------------------------------------------
2B6DA0BA4E070442B90F492899860F22
1 row selected.
SQL> SELECT DBMS_CRYPTO.HASH(RPAD('A',4001,'B'),1) FROM DUAL;
TBR-11025: Data is too long for the column.
SQL
복사
2. 사용자 정의 함수 생성
CREATE OR REPLACE FUNCTION F_HASH(v_varchar2 varchar2)
RETURN VARCHAR2 IS
v_result varchar2(100);
BEGIN
v_result := DBMS_CRYPTO.HASH(TO_CLOB(v_varchar2),1);
RETURN v_result;
END;
/
SQL
복사
3. Varchar type 최대 크기인 65532 byte 로 Hash 변환 수행
3.1. Varchar type 최대 크기 65532 Byte 문자열 생성
SQL> select lengthb(RPAD('A',(65532),'B')) FROM DUAL;
LENGTHB(RPAD('A',(65532),'B'))
------------------------------
65532
SQL
복사
3.2. Hash 변환 확인
위에서 생성한 f_hash 함수를 이용하여 65532 Byte 문자열이 hash 변환됨을 확인합니다.
SQL> select f_hash (RPAD('A',(65532),'B')) FROM DUAL;
F_HASH(RPAD('A',(65532),'B'))
--------------------------------------------------------------------------------
B972C40F3ED59EB3B1449C56D0502CE8
SQL
복사
추가로, 다양한 값을 hash 변환해 정상 동작 여부를 확인할 수 있습니다.
SQL> select f_hash (RPAD('A',(65532),'B')) FROM DUAL UNION ALL
2 select f_hash (RPAD('A',(65532),'C')) FROM DUAL UNION ALL
3 select f_hash (RPAD('B',(65532),'C')) FROM DUAL UNION ALL
4 select f_hash (RPAD('B',(65531),'C')) FROM DUAL;
F_HASH(RPAD('A',(65532),'B'))
--------------------------------------------------------------------------------
B972C40F3ED59EB3B1449C56D0502CE8
B55DC64917FD7CA4F855AE96EB6E2664
2ECCE37AD197694ECB7C90E310F96320
3CBCE91C0F95DE2B0147D96F50D40626
SQL
복사