from
http://mcpicdtl.blogspot.com/2008/09/oracle-dbmscrypto.htmloracle dbms_crypto (오라클 암호화)
1. oracle md5
ex :
select rawtohex(DBMS_CRYPTO.Hash(to_clob(to_char('mcpicdtl.blogspot.com')),2))
from dual;
함수 DBMS_CRYPTO.Hash 의 2번자 인자에 2가 들어가 있다.
이 파라미터가 1 : md4, 2 : md5, 4 : sh1 암호화 방식을 지징한다
위 함수를 실행 시키기 위해서는 sysdba 으로 로그인 해야 하거나 .
sysdba로 부터 DBMS_CRYPTO 에 대한 EXECUTE 권한을 위임 받으면 된다. (GRANI 참조)
By Haru(Vins) 위치 9/01/2008
Tag Oracle
//////////////////////////////////////////////////////////////////////////////////
http://setong.tistory.com/entry/%EC%98%A4%EB%9D%BC%ED%81%B4-%EC%95%94%ED%98%B8%ED%99%94오라클 암호화에 대해
http://blog.naver.com/mhs0519?Redirect=Log&logNo=10001979808의 내용을 약간 수정 하였다.
난 FUNCTION으로~ ^^
[오라클 암호화를 하는 과정]
1. sys 계정으로 접속한다. (로컬이라면 그냥 /as sysdba .. )
2. 접속 후 아래의 명령어 입력
@%ORACLE_HOME%/rdbms/admin/dbmsobtk.sql
@%ORACLE_HOME%/rdbms/admin/prvtobtk.plb
grant execute on sys.crypto to public;
3. 함수를 만든다.
1) 암호화
CREATE OR REPLACE FUNCTION FN_ENCRYPT( str VARCHAR2 ) RETURN VARCHAR2
IS
raw_input RAW(128);
key_string VARCHAR2(16):='keyvalues';
raw_key RAW(128):=UTL_RAW.CAST_TO_RAW(key_string);
encrypted_raw RAW(2048);
BEGIN
raw_input:=UTL_RAW.CAST_TO_RAW(RPAD(str,FLOOR((LENGTHB(Str)/8+.9))*8));
dbms_obfuscation_toolkit.DESEncrypt(
input => raw_input
, key=> raw_key
, encrypted_data => encrypted_raw);
RETURN rawtohex(encrypted_raw);
END;
2) 복호화
CREATE OR REPLACE FUNCTION FN_DECRYPT( str VARCHAR2 ) RETURN VARCHAR2
IS
key_string VARCHAR2(16) := 'keyvalues';
raw_key RAW(128):=UTL_RAW.CAST_TO_RAW(key_string);
encrypted_raw RAW(2048);
decrypted_raw RAW(2048);
BEGIN
encrypted_raw:=hextoraw(str);
dbms_obfuscation_toolkit.DESDecrypt(
input => encrypted_raw
, key=> raw_key
, decrypted_data => decrypted_raw);
RETURN UTL_RAW.CAST_TO_VARCHAR2(decrypted_raw);
END;
4. 테스트