oracle instr() 함수

sql 2014. 2. 12. 18:47

스트링 값이 컬럼에 포함되어 있는 지 여부를 확인할 때 사용됨.

포함되는 위치값을 반환한다.


 INSTR(비교대상, 비교값, 비교시작위치, 검색된 결과 순번)


SELECT  INSTR('TEST FUNCTION', 'T',1,1) COL1 FROM DUAL; 

 

 COL1

 1



SELECT  INSTR('TEST FUNCTION', 'T',1,2) COL1 FROM DUAL; 

 

 COL1

 4




Posted by 무세1
,

ftp shell 프로그래밍..

linux 2014. 2. 11. 16:50


ftp 하는 shell 프로그램..

---------------------------------------------------------

ftp -n -v IP주소 <<!

user 아이디 패스워 

verbose

prompt

mput *.txt

bye

!

---------------------------------------------------------

'linux' 카테고리의 다른 글

ssh, sftp 명령어..  (0) 2014.06.11
gzip 사용법  (0) 2014.03.27
hp unix, ibm unix 한글 언어 확인  (0) 2014.03.24
crontab 설정  (0) 2014.03.13
유용한 Unix 명령어  (0) 2014.01.23
Posted by 무세1
,

오라클 aes256 암호화

sql 2014. 1. 28. 17:37

1. sys계정으로 암호화 하여 아래 권한을 준다.

grant execute on dbms_crypto to public;


2. 생성한다...  계정이 USER01 이면


CREATE OR REPLACE package body USER01.crypt_ase256

IS

    c_aeskey char(32) := '12345678901234567890123456789012';

    /**

     * encryption type이 아래와 같이 DBMS_CRYPTO.ENCRYPT_AES256 + DBMS_CRYPTO.CHAIN_CBC + DBMS_CRYPTO.PAD_PKCS5일 경우

     * output_string의 길이는 (int(input_string/16)+1)*32 이다.

     * 즉 input_string의 길이가 100일 경우 output_string의 길이는 224이다.

     *

     * key_string는 32자리로 고정되어야 한다.

     */


    function aes_encrypt (p_str in varchar2, p_keystr in varchar2 := null) return varchar2

    is

        output_string       VARCHAR2(4000);

        encrypted_raw       RAW(2000);

        key_bytes_raw       RAW (32) ;

        encryption_type     PLS_INTEGER :=

                            DBMS_CRYPTO.ENCRYPT_AES256

                            + DBMS_CRYPTO.CHAIN_CBC

                            + DBMS_CRYPTO.PAD_PKCS5;

    begin


        if (p_keystr is not null) and (lengthb(p_keystr) = 32) then

            key_bytes_raw := UTL_RAW.CAST_TO_RAW(CONVERT(p_keystr,'AL32UTF8','US7ASCII'));

        else

            key_bytes_raw := UTL_RAW.CAST_TO_RAW(CONVERT(c_aeskey,'AL32UTF8','US7ASCII'));

        end if ;


        encrypted_raw := DBMS_CRYPTO.ENCRYPT(SRC => UTL_I18N.STRING_TO_RAW(p_str, 'AL32UTF8'), TYP => encryption_type, KEY => key_bytes_raw);

        output_string := RAWTOHEX(encrypted_raw);


        return output_string;


    end aes_encrypt;


    /**

     * key_string는 32자리로 고정되어야 한다.

     */


    function aes_decrypt (p_str in varchar2, p_keystr in varchar2 := null) return varchar2

    is

        output_string       varchar2(2000);

        decrypted_raw       raw(2000);

        key_bytes_raw       raw (32);

        decryption_type     PLS_INTEGER :=

                                DBMS_CRYPTO.ENCRYPT_AES256

                                + DBMS_CRYPTO.CHAIN_CBC

                                + DBMS_CRYPTO.PAD_PKCS5;


    begin


        if (p_keystr is not null) and (lengthb(p_keystr) = 32) then

            key_bytes_raw := UTL_RAW.CAST_TO_RAW(CONVERT(p_keystr,'AL32UTF8','US7ASCII'));

        else

            key_bytes_raw := UTL_RAW.CAST_TO_RAW(CONVERT(c_aeskey,'AL32UTF8','US7ASCII'));

        end if;


        decrypted_raw := DBMS_CRYPTO.DECRYPT(SRC => HEXTORAW(p_str), TYP => decryption_type, KEY => key_bytes_raw);

        output_string := CONVERT(UTL_RAW.CAST_TO_VARCHAR2(decrypted_raw),'US7ASCII','AL32UTF8');


        return output_string;


    end aes_decrypt;


end crypt_ase256;



3. 아래와 같이  사용

select crypt_ase256.aes_encrypt('asssss') from dual


'sql' 카테고리의 다른 글

오라클 병렬 처리 힌트  (0) 2014.02.12
oracle instr() 함수  (0) 2014.02.12
오라클 DB 전체 테이블 컬럼 조회..  (0) 2014.01.23
게시판 내용, 카운트 한번에 가져오는 SQL  (0) 2014.01.23
오라클 CLOB 컬럼 검색 방법  (0) 2014.01.23
Posted by 무세1
,