30-1:
	VAR encry_str VARCHAR2(100)
	DECLARE
	  input VARCHAR2(100):='&input';
	  key VARCHAR2(100):='12345678';
	BEGIN
	  :encry_str:=dbms_obfuscation_toolkit.desencrypt(input_string=>input,key_string=>key);
	END;
	/
30-2:
	DECLARE
	  key VARCHAR2(100):='12345678';
	  output VARCHAR2(100);
	BEGIN
	  output:=dbms_obfuscation_toolkit.desdecrypt(input_string=>:encry_str,key_string=>key);
	  dbms_output.put_line('ܽ'||output);
	END;
	/
30-3:
	CREATE OR REPLACE PACKAGE crypt_pkg IS
	  typ PLS_INTEGER:=DBMS_CRYPTO.ENCRYPT_AES256
	                  + DBMS_CRYPTO.CHAIN_CBC
	                  + DBMS_CRYPTO.PAD_PKCS5;
	  key CONSTANT RAW(32):='AB45456E59EFD93F63'||
	    '01F47DEE4BAF39A0234573400579DC5801A8AC2382BF6E';
	  FUNCTION encry(input RAW) RETURN RAW;
	  FUNCTION decry(encry_str RAW) RETURN RAW;
	END;
	/
	CREATE OR REPLACE PACKAGE BODY crypt_pkg IS
	  FUNCTION encry(input RAW) RETURN RAW IS
	  BEGIN
	    RETURN dbms_crypto.encrypt(input,typ,key);
	  END;
	  FUNCTION decry(encry_str RAW) RETURN RAW IS
	  BEGIN
	    RETURN dbms_crypto.decrypt(encry_str,typ,key);
	  END;
	END;
	/
	SELECT crypt_pkg.encry(utl_i18n.string_to_raw('hello'))  FROM dual;
	SELECT utl_i18n.raw_to_char(crypt_pkg.decry('084643FA1B10EDA0E97830FB3FB689E4')) 




