Skip to content
pvmehta.com

pvmehta.com

  • Home
  • About Me
  • Toggle search form
  • Good links for x$ tables in oracle. Oracle
  • purge_trc.sh Linux/Unix
  • On solaris 10, “S” link is not part of $ORACLE_HOME/bin/oracle as default. ( For 9.2.0.8) Oracle
  • Recovering lost SYS password Oracle
  • runon_allpdbs_show_conname.sh Oracle
  • V$CONTROLFILE_RECORD_SECTION reference notes. Oracle
  • How to find Unix server conguraiton including Server Model number and underlying disk sub-system ( On Solaris) Linux/Unix
  • Postgres DB user and OS user. POSTGRESQL
  • cache buffer chain latch Oracle
  • run this before doing any dbchange pvm_pre_change.sql Oracle
  • JSON/XML Types in Oracle Oracle
  • eplan9i.sql Oracle
  • Find nth max and min. Oracle
  • Temporary tablespace explaination Oracle
  • Database logon trigger issue Oracle

VIvek Encryption Package and Its Usage

Posted on 18-Nov-2005 By Admin No Comments on VIvek Encryption Package and Its Usage

create or replace package subs_cipher

is

function scramble ( obfs_in varchar2 ) return varchar2;

— pragma not required as of 8.1.5

pragma restrict_references( scramble, wnds, wnps, wnps);

function unscramble ( obfs_in varchar2 ) return varchar2;

— pragma not required as of 8.1.5

pragma restrict_references( unscramble, wnds, rnds, wnps );

end;

create or replace package body subs_cipher

is

— character translation sets

— second set must be identical to first, but in a different order

—

xlate_from varchar2(100) := ‘0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz~!@#$%^&*()-_=+’;

xlate_to varchar2(100) := ‘PQRtsuLTU%^VWvJYcd0eifghNl(9O&*-_~A1+xC!D=E6jSIKr$@k#n7Fm23ZB45wy8GHM)Xopqzab’;

— how many pieces should text be broken into

v_chunks integer := 4;

— reverse the order of text sent

function reverse ( forward_in varchar2 ) return varchar2

is

v_reverse varchar2(4000) := null ;

begin

v_reverse := ”;

for pos in 1 .. length ( forward_in )

loop

v_reverse := v_reverse || substr( forward_in, 0 – pos, 1);

end loop;

return v_reverse;

end;

— chop the text sent into v_chunks pieces of equal length,

— plus any remainder, then reorder the chunks

function chopit ( text_in varchar2 ) return varchar2

is

v_mod integer;

v_chunk_len integer;

v_chop varchar2(4000);

v_text_length integer;

begin

v_text_length := length(text_in);

if v_text_length < ( v_chunks + 1 ) then
if mod(v_text_length,2) = 0 then

return substr(text_in, (v_text_length / 2) + 1 ) || substr(text_in, 1,v_text_length / 2);

else

return reverse(text_in);

end if;

end if;

— get the remainder

v_mod := mod(length(text_in), v_chunks);

v_chunk_len := (length(text_in) – v_mod) / v_chunks;

v_chop := ”;

if v_mod > 0 then

v_chop := reverse(substr(text_in,0-v_mod));

end if;

v_chop := v_chop

|| substr(text_in, ( v_chunk_len * 2 ) + 1, v_chunk_len ) –3

|| substr(text_in, 1, v_chunk_len ) –1

|| substr(text_in, ( v_chunk_len * 3 ) + 1, v_chunk_len ) –4

|| reverse(substr(text_in, v_chunk_len + 1, v_chunk_len )); –2

return v_chop;

end;

— reverse text chopped by chopit

function unchop ( text_in varchar2 ) return varchar2

is

v_mod integer;

v_chunk_len integer;

v_chop varchar2(4000);

v_text_length integer;

begin

v_text_length := length(text_in);

if v_text_length < ( v_chunks + 1 ) then
if mod(v_text_length,2) = 0 then

return substr(text_in, (v_text_length / 2) + 1 ) || substr(text_in, 1,v_text_length / 2);

else

return reverse(text_in);

end if;

end if;

v_mod := mod(length(text_in),v_chunks);

v_chunk_len := (length(text_in) – v_mod) / v_chunks;

v_chop := ”;

if v_mod > 0 then

–v_chop := reverse(substr(text_in,1,v_mod));

v_chop := reverse(substr(text_in,1,v_mod));

end if;

v_chop :=

substr(text_in, v_chunk_len + v_mod + 1, v_chunk_len ) –1

|| reverse(substr(text_in, ( v_chunk_len * 3 ) + v_mod + 1, v_chunk_len )) –2

|| substr(text_in, v_mod + 1, v_chunk_len ) –3

|| substr(text_in, ( v_chunk_len * 2 ) + v_mod + 1, v_chunk_len ) –4

|| v_chop; — remainder

return v_chop;

end;

function scramble ( obfs_in varchar2 ) return varchar2

is

begin

return translate( reverse(chopit(obfs_in)) , xlate_from, xlate_to );

end;

function unscramble ( obfs_in varchar2 ) return varchar2

is

begin

return translate( unchop(reverse(obfs_in)) , xlate_to, xlate_from );

end;

END subs_cipher;

/

—————- USAGE —————————

update cif_address set street_Address_1=vivek.subs_cipher.scramble(subs_cipher.scramble(street_address_1)) where street_address_1 is not null;

commmit;

update cif_address set street_Address2=subs_cipher.scramble(vivek.subs_cipher.scramble(street_address2)) where street_address2 is not null;

commit;

update cif_address set street_Address3=subs_cipher.scramble(vivek.subs_cipher.scramble(street_address3)) where street_address3 is not null;

commit;

Oracle, SQL scripts

Post navigation

Previous Post: create database link syntax
Next Post: Gathering statistics with DBMS_STATS

Related Posts

  • currwait.sql Oracle
  • Another export with Query Oracle
  • tblwopk.sql /* Find Tables Without PK */ Oracle
  • find_arc.sql Oracle
  • Example of How To Resize the Online Redo Logfiles Note:1035935.6 Oracle
  • oradebug ipcrm ipcs Oracle

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Categories

  • Ansible (0)
  • AWS (2)
  • Azure (1)
  • Django (0)
  • GIT (1)
  • Linux/Unix (149)
  • MYSQL (5)
  • Oracle (402)
  • PHP/MYSQL/Wordpress (10)
  • POSTGRESQL (1)
  • Power-BI (0)
  • Python/PySpark (7)
  • RAC (18)
  • rman-dataguard (26)
  • shell (150)
  • SQL scripts (350)
  • SQL Server (6)
  • Uncategorized (5)
  • Videos (0)

Recent Posts

  • SAT Mathematics 10 questions and answer at the end.30-Apr-2026
  • top 10 AI news today30-Apr-2026
  • runon_allpdbs_show_conname.sh23-Apr-2026
  • runon_allcdbs_find_pdbs.sql23-Apr-2026
  • Running PDB on single node in RAC09-Apr-2026
  • find_arc.sql09-Apr-2026
  • pvm_pre_change.sql08-Apr-2026
  • find_encr_wallet.sql08-Apr-2026
  • find_pdbs.sql08-Apr-2026
  • Creating a Container Database using dbaascli08-Apr-2026

Archives

  • 2026
  • 2025
  • 2024
  • 2023
  • 2010
  • 2009
  • 2008
  • 2007
  • 2006
  • 2005
  • Finding Oracle Patches with opatch Oracle
  • Wait.sql Oracle
  • 10g RAC: Troubleshooting CRS Root.sh Problems Oracle
  • SQL Server Vs Oracle Architecture difference SQL Server
  • create database syntax Oracle
  • Jai Shree Ram Oracle
  • How to see which patches are applied. Oracle
  • login.sql Oracle

Copyright © 2026 pvmehta.com.

Powered by PressBook News WordPress theme