본문 바로가기
Database/Oracle

[ORACLE] RAWTOHEX() 함수 실무 활용 법 : 해시 값, 토큰 비교에 강력한 이유

by Papa Martino V 2025. 6. 6.
728x90

오라클 RAWTOHEX() 함수 실무 활용법: 해시값, 토큰 비교에 강력한 이유
[Oracle] RAWTOHEX

1. RAWTOHEX() 함수란?

RAWTOHEX() 함수는 Oracle에서 RAW 데이터16진수 문자열(HEX)로 변환하는 데 사용됩니다. 이 함수는 BLOB, 암호화된 데이터, 해시값 등 사람이 읽을 수 없는 RAW 데이터를 시각화하거나 디버깅할 때 매우 유용합니다.

2. 문법

RAWTOHEX(raw_input)
  • raw_input: RAW 타입의 입력 값
  • 반환값: VARCHAR2 타입의 16진수 문자열

3. 기본 사용 예제

예제 1: RAW 값 변환

SELECT RAWTOHEX(UTL_RAW.CAST_TO_RAW('Hello')) AS hex_output FROM dual;

결과: 48656 C6 C6 F

예제 2: 테이블 칼럼의 RAW 데이터 출력

SELECT id, RAWTOHEX(binary_col) AS hex_data
FROM secure_data;

바이너리 데이터를 사람이 읽을 수 있는 HEX 문자열로 변환하여 조회

4. 실무 활용 사례

  • 암호화된 토큰이나 인증 키를 HEX 문자열로 로깅할 때
  • 데이터 검증 시 BLOB/RAW 데이터 비교 용도
  • 네트워크 패킷이나 해시값을 디버깅할 때
  • 시스템 간 데이터 변환을 위한 중간 포맷 제공

5. RAWTOHEX vs HEXTORAW 함수 비교

함수 입력 출력 용도
RAWTOHEX() RAW 16진수 문자열 RAW → 사람이 읽을 수 있는 HEX 문자열
HEXTORAW() 16진수 문자열 RAW HEX 문자열을 RAW 데이터로 복원

6. PL/SQL에서의 활용 예

DECLARE
  v_raw RAW(50) := UTL_RAW.CAST_TO_RAW('Oracle');
  v_hex VARCHAR2(100);
BEGIN
  v_hex := RAWTOHEX(v_raw);
  DBMS_OUTPUT.PUT_LINE('HEX 변환 결과: ' || v_hex);
END;

7. RAWTOHEX 결과 포맷 이해

문자열 'ABC'를 RAW로 변환하면 414243 (A:41, B:42, C:43)으로 출력됩니다. 각 문자의 ASCII 코드 값이 2자리 16진수로 표시되는 구조입니다.

8. 보안 및 해시값 시나리오 예제

SELECT file_id,
       RAWTOHEX(sha256_hash) AS hash_hex
FROM file_hashes
WHERE file_type = 'PDF';

해시값을 텍스트로 출력하거나 로그에 남길 때 사용

9. 디버깅 및 로그 용도로의 응용

  • 암호화된 데이터가 올바르게 저장되었는지 확인
  • 중간 값의 HEX 표현을 통해 디버깅 로직 구현
  • 데이터 유효성 검증 자동화 시 로그 저장

10. 관련 함수 조합 활용 팁

  • HEXTORAW(): RAWTOHEX()의 반대 함수
  • UTL_ENCODE.BASE64_ENCODE(): RAW → BASE64
  • DBMS_CRYPTO.HASH(): RAW로 해시값 생성 → RAWTOHEX()로 가시화

11. 주의사항

  • RAWTOHEX는 RAW 입력만 허용하며 VARCHAR2에는 사용 불가
  • 길이가 긴 RAW 데이터를 변환할 경우 출력 문자열이 매우 길어질 수 있음
  • 디버깅 로그 출력 시 보안성 고려 필요 (암호화 키 노출 방지)

12. 마무리

RAWTOHEX() 함수는 Oracle에서 RAW 데이터를 시각화하거나 검증, 디버깅하는 데 매우 유용한 도구입니다. 특히 보안 관련 시스템, 파일 해시값 저장, 인증 토큰 처리 등에서 HEX 문자열로의 변환이 필요한 경우 활용도가 높습니다. HEXTORAW(), DBMS_CRYPTO, UTL_ENCODE 등과 함께 사용하면 더욱 강력한 데이터 처리 로직을 구성할 수 있습니다.

출처 및 참고 자료

  • Oracle 공식 문서: https://docs.oracle.com/en/database/
  • Oracle 21c SQL Language Reference
  • Oracle DBMS_CRYPTO 패키지 문서
  • 실무 데이터 처리 및 PL/SQL 프로젝트 경험 기반
728x90