Skip to content
pvmehta.com

pvmehta.com

  • Home
  • About Me
  • Toggle search form
  • Drop database in Oracle 10g Oracle
  • 10g oem configuration Oracle
  • Unix command for system configuration Linux/Unix
  • Best approach for Oracle database patching sequence to latest/required patchset along with CPU/PSU/any-other-one-off patch ID 865255.1 Oracle
  • Another Tuning Article for subheap of shared pool Oracle
  • Create type and Grant on it. Oracle
  • Renaming Oracle Instance Name Oracle
  • Oracle Identifiers Oracle
  • telnet listening Linux/Unix
  • checking connectivity between two servers Linux/Unix
  • Export With Query Another Example. Oracle
  • MYSQL for Oracle DBA MYSQL
  • online_ts_bkup.sql Oracle
  • In Addition to previous note, following grants needed on PERFSTAT user. Oracle
  • before_trunc.sql Before Truncate table needs to execute following: 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

  • PLSQL Table Syntax 2 Oracle
  • Does DBMS_JOB recompute the NEXT_DATE interval after or before Oracle
  • FRA Information. Oracle
  • True Session Wait Activity in Oracle 10g Verygood Oracle
  • Adding Datafile on Primary Server and Impact on Standby Server Oracle
  • Processes Parameter decision 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 (403)
  • 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

  • Key Management in Oracle: The Core Issue: Missing Master Key12-May-2026
  • 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

Archives

  • 2026
  • 2025
  • 2024
  • 2023
  • 2010
  • 2009
  • 2008
  • 2007
  • 2006
  • 2005
  • How to find where datafile is created dbf_info.sql Oracle
  • MYSQL and Oracle Comparison for Oracle DBA MYSQL
  • Find Command Linux/Unix
  • How to find pinned objects from shared pool. (pinned via dbms_shared_pool.keep) Oracle
  • Find_stale_dr.sql finding stale physical DR.. Oracle
  • Consolidated Reference List Of Notes For Migration / Upgrade Service Requests -ID 762540.1 Oracle
  • New OFA for 11g Oracle
  • Oracle vs MYSQL Architecture differences (For DBAs) MYSQL

Copyright © 2026 pvmehta.com.

Powered by PressBook News WordPress theme