Skip to content
pvmehta.com

pvmehta.com

  • Home
  • About Me
  • Toggle search form
  • crontab syntax Linux/Unix
  • Composite Index creation tip from Vivek Oracle
  • online_ts_bkup.sql Oracle
  • Another Tuning Article for subheap of shared pool Oracle
  • switchlogfile.sh Linux/Unix
  • ext#.sql Oracle
  • Sort with ASCII order and Numeric Order Linux/Unix
  • DB Console Mainenance. Oracle
  • 10g oem configuration Oracle
  • cold backup scripts to copy locally Linux/Unix
  • Logic to chech # of parameters command line parameters Linux/Unix
  • How to Modify the statistics collection by MMON for AWR repository Oracle
  • Resolving RMAN Hung Jobs Oracle
  • Consolidated Reference List Of Notes For Migration / Upgrade Service Requests -ID 762540.1 Oracle
  • scripts to take listener.log backup Linux/Unix

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

  • GSQ.sql Oracle
  • Another Tuning Article for subheap of shared pool Oracle
  • FRA Information. Oracle
  • V$transaction notes for finding XID composition. Oracle
  • SQL_PROFILE – I explaination Oracle
  • create user with unlimited quota Oracle

Leave a Reply Cancel reply

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

Categories

  • AWS (2)
  • Azure (1)
  • Linux/Unix (149)
  • Oracle (392)
  • PHP/MYSQL/Wordpress (10)
  • Power-BI (0)
  • Python/PySpark (7)
  • RAC (17)
  • rman-dataguard (26)
  • shell (149)
  • SQL scripts (341)
  • Uncategorized (0)
  • Videos (0)

Recent Posts

  • load SPM baseline from cursor cache05-Jun-2025
  • Drop all SPM baselines for SQL handle05-Jun-2025
  • Load SPM baseline from AWR05-Jun-2025
  • Drop specific SQL plan baseline – spm05-Jun-2025
  • findinfo.sql (SQL for getting CPU and Active session info)27-May-2025
  • SQL Tracker by SID sqltrackerbysid.sql22-Apr-2025
  • How to connect to Oracle Database with Wallet with Python.21-Mar-2025
  • JSON/XML Types in Oracle18-Mar-2025
  • CPU Core related projections12-Mar-2025
  • Exadata Basics10-Dec-2024

Archives

  • 2025
  • 2024
  • 2023
  • 2010
  • 2009
  • 2008
  • 2007
  • 2006
  • 2005
  • shutdown linux Linux/Unix
  • How to check current redo log progress redo_progress.sql Oracle
  • DBMS_Shared_pool pinning triggers Oracle
  • Remove duplicate rows from table Oracle
  • move_arch_files.ksh Linux/Unix
  • runsql_once.ksh Linux/Unix
  • find_open_cur.sql Find open cursorts per session Oracle
  • Changing default shell Linux/Unix

Copyright © 2025 pvmehta.com.

Powered by PressBook News WordPress theme