DECLARE
   Y VARCHAR2(60);
   Z VARCHAR2(60);
BEGIN
   SELECT X INTO Y FROM X;
   DBMS_OBFUSCATION_TOOLKIT.DESENCRYPT(INPUT_STRING => Y,       -- Multiplo de 8
                                       KEY_STRING => '12345678',-- 8 bytes
                                       ENCRYPTED_STRING => Z);
   UPDATE X SET X=Z;
   Commit;
END;

DECLARE
   Y VARCHAR2(60);
   Z VARCHAR2(60);
BEGIN
   SELECT X INTO Y FROM X;
   DBMS_OBFUSCATION_TOOLKIT.DESdecrypt(INPUT_STRING => Y,
                                       KEY_STRING => '12345678',
                                       DECRYPTED_STRING => Z);
   UPDATE X SET X=Z;
   commit;
END;

DECLARE
   Y VARCHAR2(60):='jkjkoppoiuiuytty';
   Z VARCHAR2(60);
BEGIN
   DBMS_OBFUSCATION_TOOLKIT.DESENCRYPT(INPUT_STRING => Y, -- Multiplo de 8
                                       KEY_STRING => '12345678',-- 8 bytes
                                       ENCRYPTED_STRING => Z);
END;



create or replace Function Encrypt(xData in varchar2, xKey in varchar2) return varchar2 is 
   yData  varchar2(256);
   zData  varchar2(256);
   xFill  varchar2(256):=null;
   xLargo number(3):=length(xData);
BEGIN
   if Mod(xLargo,8)!=0 then
      DBMS_OBFUSCATION_TOOLKIT.DESENCRYPT(INPUT_STRING => lpad(' ',8) ,
                                          KEY_STRING => xKey, ENCRYPTED_STRING => xFill);
      xFill:=substr(xFill, 1, 8-mod(xlargo,8));
   end if;
   DBMS_OBFUSCATION_TOOLKIT.DESENCRYPT(INPUT_STRING => xData||xFill,
                                       KEY_STRING => xKey, ENCRYPTED_STRING => yData);
   DBMS_OBFUSCATION_TOOLKIT.DESENCRYPT(INPUT_STRING => '12345678',
                                       KEY_STRING => 'abcdefgh', ENCRYPTED_STRING => XFill);
   DBMS_OBFUSCATION_TOOLKIT.DESENCRYPT(INPUT_STRING => yData,
                                       KEY_STRING => xKey, ENCRYPTED_STRING => zData);
   return zData;
END;
/

create or replace Function Decrypt(xData in varchar2, xKey in varchar2) return varchar2 is 
   yData  varchar2(256);
   zData  varchar2(256);
   xFill  varchar2(256):=null;
   xLargo number(3):=length(xData);
BEGIN
   DBMS_OBFUSCATION_TOOLKIT.DESENCRYPT(INPUT_STRING => lpad(' ', 8),
                                       KEY_STRING => xKey, ENCRYPTED_STRING => xFill);
   DBMS_OBFUSCATION_TOOLKIT.DESDECRYPT(INPUT_STRING => xData,
                                       KEY_STRING => xKey, DECRYPTED_STRING => yData);
   DBMS_OBFUSCATION_TOOLKIT.DESDECRYPT(INPUT_STRING => yData,
                                       KEY_STRING => xKey, DECRYPTED_STRING => zData);
   For i in reverse 1..7
   loop 
      if substr(zData, xLargo-i+1, i)=Substr(XFill,1,i) then
         xLargo:=xLargo-i;
         exit;
      end if;
   end loop;
   return substr(zData, 1, xLargo);
END;
/


DECLARE
   Y VARCHAR2(60);
   Z VARCHAR2(60);
BEGIN
   SELECT X INTO Y FROM X;
   Z:=ENCRYPT(Y,'12345678');
   UPDATE X SET X=Z;
   Commit;
END;

DECLARE
   Y VARCHAR2(60);
   Z VARCHAR2(60);
BEGIN
   SELECT X INTO Y FROM X;
   Z:=DECRYPT(Y,'12345678');
   UPDATE X SET X=Z;
   commit;
END;