blowfish 알고리즘(c언어 기준) 0 0 2,313

by 제임스 [SQL Query] [2014.08.29 15:32:14]


예전에, 허승호님이 올려준 글에 sha-1 암호화에 대해 pl-sql문으로 아래처럼 작성한게 있더라고요.
혹시 그럼 blowfish 알고리즘(암/복호화)(구글이나 네이버에 알고리즘 참조)도 sql문이나 pl-sql문으로 가능할까요? (base64 encoding/decoding 도 포함 : 네이버나 구글참조)
이게되면 c언어로 복잡하게 구현안해도 오라클만을 이용해서 편하게 구축할수 있을거같습니다.
난이도가 상당할것으로 보이지만 불가능한것은 아니라고 봅니다.
구르비의 쿼리신이신 마농님을 포함하여 여러 고수님들 같이 고민해보셔서 구축가능할까요?
 
 
 
CREATE OR REPLACE FUNCTION GET_SHA1 (INPUT VARCHAR2 default NULL) RETURN VARCHAR2 IS
l_string VARCHAR2(100);
l_sig_mac RAW(2000);
l_base64_sig_mac VARCHAR2(2000);
 
BEGIN
 
IF INPUT IS NULL THEN
RETURN INPUT;
END IF;
 
l_string := UTL_URL.ESCAPE(INPUT);
 
l_sig_mac :=DBMS_CRYPTO.Hash(UTL_I18N.STRING_TO_RAW(l_string, 'AL32UTF8'), 3);
 
l_base64_sig_mac := UTL_RAW.CAST_TO_VARCHAR2(UTL_ENCODE.BASE64_ENCODE(l_sig_mac));
 
-- DBMS_OUTPUT.put_line('MAC Signature (Base64-encoded): ' || l_base64_sig_mac_alter);
 
IF LENGTHB(l_base64_sig_mac) > 0 THEN
 
l_base64_sig_mac := SUBSTR(l_base64_sig_mac ,1 ,LENGTHB(l_base64_sig_mac)-1 ) || '3d';
 
l_base64_sig_mac := REPLACE(l_base64_sig_mac , ' ' ,'20');
l_base64_sig_mac := REPLACE(l_base64_sig_mac , '/' ,'2F');
l_base64_sig_mac := REPLACE(l_base64_sig_mac , '+' ,'2B');
 
END IF;
 
 
RETURN l_base64_sig_mac;
EXCEPTION
WHEN NO_DATA_FOUND THEN
NULL;
WHEN OTHERS THEN
-- Consider logging the error and then re-raise
RAISE;
END GET_SHA1;
/
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입