[SQL] 어떻게 오라클 MD5 해시 함수를 호출하는 방법?
SQL어떻게 오라클 MD5 해시 함수를 호출하는 방법?
나는 코드 아래에 있습니다. 나는 오라클 11g를 사용하고 있습니다.
SELECT DBMS_OBFUSCATION_TOOLKIT.md5 (input => UTL_RAW.cast_to_raw(
FIRST_NAME
||LAST_NAME
)) md5_key ,
FIRST_NAME ,
LAST_NAME
FROM C_NAME_TAB
WHERE PKEY='1234'
어떻게 내가이 코드를 호출 할 수 있습니다? 내가 직접 sqldeveloper에서이 코드를 실행할 수 있습니까?
해결법
-
==============================
1.오라클 12C에서는 함수 STANDARD_HASH을 사용할 수 있습니다. 그것은 추가 권한이 필요하지 않습니다.
오라클 12C에서는 함수 STANDARD_HASH을 사용할 수 있습니다. 그것은 추가 권한이 필요하지 않습니다.
select standard_hash('foo', 'MD5') from dual;
DBMS_OBFUSCATION_TOOLKIT (여기서는 주 참조)되지 않습니다. 직접 DBMS_CRYPTO을 사용할 수 있습니다 :
select rawtohex( DBMS_CRYPTO.Hash ( UTL_I18N.STRING_TO_RAW ('foo', 'AL32UTF8'), 2) ) from dual;
산출:
ACBD18DB4CC2F85CEDEF654FCCC4A4D8
필요한 경우 낮은 함수 호출을 추가합니다. DBMS_CRYPTO에 대한 자세한.
-
==============================
2.난 그럴거야:
난 그럴거야:
select DBMS_CRYPTO.HASH(rawtohex('foo') ,2) from dual;
산출:
DBMS_CRYPTO.HASH(RAWTOHEX('FOO'),2) -------------------------------------------------------------------------------- ACBD18DB4CC2F85CEDEF654FCCC4A4D8
-
==============================
3.@ user755806 나는 귀하의 질문에 대답하고 있다고 생각하지 않습니다. 난 당신의 코드를했다하지만 낮은 기능을 추가 한 'foo는'예 문자열을 사용하며 반환 된 해시의 길이를 발견했다. SQLPLUS 또는 오라클의 SQL 개발자 자바 데이터베이스 클라이언트에서는 값의 md5sum를 호출이 사용할 수 있습니다. 열 형식은 프리젠 테이션을 정리.
@ user755806 나는 귀하의 질문에 대답하고 있다고 생각하지 않습니다. 난 당신의 코드를했다하지만 낮은 기능을 추가 한 'foo는'예 문자열을 사용하며 반환 된 해시의 길이를 발견했다. SQLPLUS 또는 오라클의 SQL 개발자 자바 데이터베이스 클라이언트에서는 값의 md5sum를 호출이 사용할 수 있습니다. 열 형식은 프리젠 테이션을 정리.
column hash_key format a34; column hash_key_len format 999999; select dbms_obfuscation_toolkit.md5( input => UTL_RAW.cast_to_raw('foo')) as hash_key, length(dbms_obfuscation_toolkit.md5( input => UTL_RAW.cast_to_raw('foo'))) as hash_key_len from dual;
결과 집합
HASH_KEY HASH_KEY_LEN ---------------------------------- ------------ acbd18db4cc2f85cedef654fccc4a4d8 32
리눅스 md5sum이 명령에서 반환 된 같은 값입니다.
echo -n foo | md5sum acbd18db4cc2f85cedef654fccc4a4d8 -
-
==============================
4.암시 적으로 AL32UTF8에 내용을 레코딩하지 않고 내 원하는 인코딩으로 CLOB 콘텐츠 분야의 MD5 해시를 계산하려면,이 코드를 사용했습니다 :
암시 적으로 AL32UTF8에 내용을 레코딩하지 않고 내 원하는 인코딩으로 CLOB 콘텐츠 분야의 MD5 해시를 계산하려면,이 코드를 사용했습니다 :
create or replace function clob2blob(AClob CLOB) return BLOB is Result BLOB; o1 integer; o2 integer; c integer; w integer; begin o1 := 1; o2 := 1; c := 0; w := 0; DBMS_LOB.CreateTemporary(Result, true); DBMS_LOB.ConvertToBlob(Result, AClob, length(AClob), o1, o2, 0, c, w); return(Result); end clob2blob; / update my_table t set t.hash = (rawtohex(DBMS_CRYPTO.Hash(clob2blob(t.content),2)));
from https://stackoverflow.com/questions/22533037/how-to-call-oracle-md5-hash-function by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 기둥 이름을 통해) (DataReader.GetString (0) | 2020.07.14 |
---|---|
[SQL] SQL 제약 조건 : 날짜 A는 날짜 B 전입니다 - 어떻게? (0) | 2020.07.14 |
[SQL] SQL : 교차와 구문 오류? (0) | 2020.07.13 |
[SQL] MySQL의 GROUP BY와 리턴 수 0 (0) | 2020.07.13 |
[SQL] 지정한 캐스트가 검색 중 SCOPE_IDENTITY 동안 유효하지 않습니다 (0) | 2020.07.13 |