×

Welcome to TagMyCode

Please login or create account to add a snippet.
1
0
 
0
Language: SQL
Posted by: Hariharan Radhakrishnan
Added: Nov 2, 2011 8:53 AM
Modified: Nov 2, 2011 9:48 AM
Views: 1065
  1. ************TO EXECUTE the Package*****************
  2. DECLARE
  3.    l_value   VARCHAR2 (50) := 'ORACLE-BASE';
  4.    l_raw     RAW (50);
  5. BEGIN
  6.    DBMS_OUTPUT.put_line ('L_Value : ' || l_value);
  7.    l_raw := toolkit.encrypt_data (l_value);
  8.    DBMS_OUTPUT.put_line ('Encrypted Data : ' || l_raw);
  9.    DBMS_OUTPUT.put_line ('Decrypted Data:  ' || toolkit.decrypt_data (l_raw));
  10. END;
  11.  
  12. **************Package******************************
  13. CREATE OR REPLACE PACKAGE toolkit
  14. AS
  15. /******************************************************************************
  16.    NAME:       Toolkit
  17.    PURPOSE: Encripting And Decritping Of Data
  18.  
  19.    REVISIONS:
  20.    Ver        Date        Author           Description
  21.    ---------  ----------  ---------------  ------------------------------------
  22.    1.0        02.11.2011             1. Created this package.
  23. ******************************************************************************/
  24.    FUNCTION encrypt_data (p_text IN VARCHAR2)
  25.       RETURN RAW;
  26.  
  27.    FUNCTION decrypt_data (p_raw IN RAW)
  28.       RETURN VARCHAR2;
  29. END toolkit;
  30. /
  31.  
  32. CREATE OR REPLACE PACKAGE BODY toolkit
  33. AS
  34. /******************************************************************************
  35.    NAME:       ToolKit
  36.    PURPOSE:
  37.  
  38.    REVISIONS:
  39.    Ver        Date        Author           Description
  40.    ---------  ----------  ---------------  ------------------------------------
  41.    1.0        02.11.2011             1. Created this package body.
  42. ******************************************************************************/
  43.    g_key       RAW (32767)  := UTL_RAW.cast_to_raw (' 12345678 ');
  44.    g_pad_chr   VARCHAR2 (1) := '~';
  45.  
  46.    PROCEDURE padstring (p_text IN OUT VARCHAR2);
  47.  
  48.    FUNCTION encrypt_data (p_text IN VARCHAR2)
  49.       RETURN RAW
  50.    IS
  51.       l_text        VARCHAR2 (32767) := p_text;
  52.       l_encrypted   RAW (32767);
  53.    BEGIN
  54.       padstring (l_text);
  55.       DBMS_OBFUSCATION_TOOLKIT.desencrypt
  56.                                        (INPUT               => UTL_RAW.cast_to_raw
  57.                                                                        (l_text),
  58.                                         KEY                 => g_key,
  59.                                         encrypted_data      => l_encrypted
  60.                                        );
  61.       RETURN l_encrypted;
  62.    END;
  63.  
  64.    FUNCTION decrypt_data (p_raw IN RAW)
  65.       RETURN VARCHAR2
  66.    IS
  67.       l_decrypted   VARCHAR2 (32767);
  68.    BEGIN
  69.       DBMS_OBFUSCATION_TOOLKIT.desdecrypt (INPUT               => p_raw,
  70.                                            KEY                 => g_key,
  71.                                            decrypted_data      => l_decrypted
  72.                                           );
  73.       RETURN RTRIM (UTL_RAW.cast_to_varchar2 (l_decrypted), g_pad_chr);
  74.    END;
  75.  
  76.    PROCEDURE padstring (p_text IN OUT VARCHAR2)
  77.    IS
  78.       l_units   NUMBER;
  79.    BEGIN
  80.       IF LENGTH (p_text) MOD 8 > 0
  81.       THEN
  82.          l_units := TRUNC (LENGTH (p_text) / 8) + 1;
  83.          p_text := RPAD (p_text, l_units * 8, g_pad_chr);
  84.       END IF;
  85.    END;
  86. END toolkit;
  87. /