<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://www.sqle.ru/index.php?action=history&amp;feed=atom&amp;title=Oracle_PL%2FSQL_Tutorial%2FSystem_Packages%2Fdbms_obfuscation_toolkit</id>
		<title>Oracle PL/SQL Tutorial/System Packages/dbms obfuscation toolkit - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://www.sqle.ru/index.php?action=history&amp;feed=atom&amp;title=Oracle_PL%2FSQL_Tutorial%2FSystem_Packages%2Fdbms_obfuscation_toolkit"/>
		<link rel="alternate" type="text/html" href="http://www.sqle.ru/index.php?title=Oracle_PL/SQL_Tutorial/System_Packages/dbms_obfuscation_toolkit&amp;action=history"/>
		<updated>2026-05-24T12:31:47Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://www.sqle.ru/index.php?title=Oracle_PL/SQL_Tutorial/System_Packages/dbms_obfuscation_toolkit&amp;diff=3298&amp;oldid=prev</id>
		<title> в 13:45, 26 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://www.sqle.ru/index.php?title=Oracle_PL/SQL_Tutorial/System_Packages/dbms_obfuscation_toolkit&amp;diff=3298&amp;oldid=prev"/>
				<updated>2010-05-26T13:45:46Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 13:45, 26 мая 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
			</entry>

	<entry>
		<id>http://www.sqle.ru/index.php?title=Oracle_PL/SQL_Tutorial/System_Packages/dbms_obfuscation_toolkit&amp;diff=3299&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://www.sqle.ru/index.php?title=Oracle_PL/SQL_Tutorial/System_Packages/dbms_obfuscation_toolkit&amp;diff=3299&amp;oldid=prev"/>
				<updated>2010-05-26T10:05:56Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== dbms_obfuscation_toolkit.DES3Decrypt==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt; create table emp(&lt;br /&gt;
  2           emp_id                integer         primary key&lt;br /&gt;
  3          ,lastname               varchar2(20)    not null&lt;br /&gt;
  4          ,firstname              varchar2(15)    not null&lt;br /&gt;
  5          ,midinit                varchar2(1)&lt;br /&gt;
  6          ,street                 varchar2(30)&lt;br /&gt;
  7          ,city                   varchar2(20)&lt;br /&gt;
  8          ,state                  varchar2(2)&lt;br /&gt;
  9          ,zip                    varchar2(5)&lt;br /&gt;
 10          ,shortZipCode                   varchar2(4)&lt;br /&gt;
 11          ,area_code              varchar2(3)&lt;br /&gt;
 12          ,phone                  varchar2(8)&lt;br /&gt;
 13          ,company_name           varchar2(50));&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into emp(emp_id,lastname,firstname,midinit,street,city,state,zip,shortZipCode,area_code,phone,company_name)values&lt;br /&gt;
  2                      (1,&amp;quot;Jones&amp;quot;,&amp;quot;Joe&amp;quot;,&amp;quot;J&amp;quot;,&amp;quot;1 Ave&amp;quot;,&amp;quot;New York&amp;quot;,&amp;quot;NY&amp;quot;,&amp;quot;11202&amp;quot;,&amp;quot;1111&amp;quot;,&amp;quot;212&amp;quot;, &amp;quot;221-4333&amp;quot;,&amp;quot;Big Company&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into emp(emp_id,lastname,firstname,midinit,street,city,state,zip,shortZipCode,area_code,phone,company_name)values&lt;br /&gt;
  2                      (2,&amp;quot;Smith&amp;quot;,&amp;quot;Sue&amp;quot;,&amp;quot;J&amp;quot;,&amp;quot;1 Street&amp;quot;,&amp;quot;New York&amp;quot;,&amp;quot;NY&amp;quot;,&amp;quot;11444&amp;quot;,&amp;quot;1111&amp;quot;,&amp;quot;212&amp;quot;, &amp;quot;436-6773&amp;quot;,&amp;quot;Little Company&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into emp(emp_id,lastname,firstname,midinit,street,city,state,zip,shortZipCode,area_code,phone,company_name)values&lt;br /&gt;
  2                      (3,&amp;quot;X&amp;quot;,&amp;quot;Peggy&amp;quot;,&amp;quot;J&amp;quot;,&amp;quot;1 Drive&amp;quot;,&amp;quot;New York&amp;quot;,&amp;quot;NY&amp;quot;,&amp;quot;45502&amp;quot;,&amp;quot;2222&amp;quot;,&amp;quot;212&amp;quot;, &amp;quot;234-4444&amp;quot;,&amp;quot;Medium Company&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into emp(emp_id,lastname,firstname,midinit,street,city,state,zip,shortZipCode,area_code,phone,company_name)values&lt;br /&gt;
  2                      (4,&amp;quot;Murdy&amp;quot;,&amp;quot;Jill&amp;quot;, null,&amp;quot;930 Eady St&amp;quot;,&amp;quot;New York&amp;quot;,&amp;quot;NY&amp;quot;,&amp;quot;45452&amp;quot;,&amp;quot;6458&amp;quot;,&amp;quot;212&amp;quot;, &amp;quot;634-7733&amp;quot;,&amp;quot;Wilton Company&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; ALTER TABLE emp&lt;br /&gt;
  2  ADD ccn  VARCHAR2(2048);&lt;br /&gt;
Table altered.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE emp_id_key_table(emp_id NUMBER PRIMARY KEY,key_value VARCHAR2(80));&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE or REPLACE FUNCTION ccn_decrypt(v_emp_id IN NUMBER, v_ccn IN VARCHAR2)&lt;br /&gt;
  2  RETURN VARCHAR2&lt;br /&gt;
  3  IS&lt;br /&gt;
  4     v_key VARCHAR2(80);&lt;br /&gt;
  5     v_decrypted_string VARCHAR2(2048);&lt;br /&gt;
  6  BEGIN&lt;br /&gt;
  7        SELECT key_value INTO v_key FROM emp_id_key_table WHERE emp_id = v_emp_id;&lt;br /&gt;
  8&lt;br /&gt;
  9        dbms_obfuscation_toolkit.DES3Decrypt(input_string =&amp;gt; v_ccn, key_string =&amp;gt; v_key, decrypted_string =&amp;gt; v_decrypted_string);&lt;br /&gt;
 10        RETURN (v_decrypted_string);&lt;br /&gt;
 11  END;&lt;br /&gt;
 12  /&lt;br /&gt;
Function created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; select emp_id, ccn_decrypt(emp_id, ccn) from emp where ccn is not null;&lt;br /&gt;
no rows selected&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table emp;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt; drop table emp_id_key_table;&lt;br /&gt;
Table dropped.&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== dbms_obfuscation_toolkit.DES3GETKEY and dbms_obfuscation_toolkit.DES3ENCRYPT==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt; -- create demo table&lt;br /&gt;
SQL&amp;gt; create table emp(&lt;br /&gt;
  2    ID                 VARCHAR2(4 BYTE)         NOT NULL,&lt;br /&gt;
  3    fname         VARCHAR2(10 BYTE),&lt;br /&gt;
  4    lname          VARCHAR2(10 BYTE),&lt;br /&gt;
  5    Start_Date         DATE,&lt;br /&gt;
  6    End_Date           DATE,&lt;br /&gt;
  7    Salary             Number(8,2),&lt;br /&gt;
  8    City               VARCHAR2(10 BYTE),&lt;br /&gt;
  9    Description        VARCHAR2(15 BYTE)&lt;br /&gt;
 10  )&lt;br /&gt;
 11  /&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE or REPLACE TRIGGER ccn_encrypt_trig&lt;br /&gt;
  2  BEFORE INSERT or UPDATE of fname on emp&lt;br /&gt;
  3  FOR EACH ROW&lt;br /&gt;
  4  DECLARE&lt;br /&gt;
  5     v_key VARCHAR2(80);&lt;br /&gt;
  6     v_seed VARCHAR2(80) := &amp;quot;0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ&amp;quot;;&lt;br /&gt;
  7     v_encrypted_string VARCHAR2(2048);&lt;br /&gt;
  8  BEGIN&lt;br /&gt;
  9        dbms_obfuscation_toolkit.DES3GETKEY(which=&amp;gt;1, seed_string=&amp;gt;v_seed,key=&amp;gt;v_key);&lt;br /&gt;
 10        dbms_obfuscation_toolkit.DES3ENCRYPT(input_string =&amp;gt; RPAD(:NEW.fname,16,&amp;quot; &amp;quot;), key_string =&amp;gt; v_key, encrypted_string =&amp;gt; v_encrypted_string );&lt;br /&gt;
 11  END;&lt;br /&gt;
 12  /&lt;br /&gt;
Trigger created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; -- prepare data&lt;br /&gt;
SQL&amp;gt; insert into emp(ID,  fname, lname, Start_Date,                     End_Date,                       Salary,  City,       Description)&lt;br /&gt;
  2               values (&amp;quot;01&amp;quot;,&amp;quot;Jason&amp;quot;,    &amp;quot;Martin&amp;quot;,  to_date(&amp;quot;19960725&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;20060725&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 1234.56, &amp;quot;Toronto&amp;quot;,  &amp;quot;Programmer&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
insert into emp(ID,  fname, lname, Start_Date,                     End_Date,&lt;br /&gt;
                   Salary,  City,       Description)&lt;br /&gt;
            *&lt;br /&gt;
ERROR at line 1:&lt;br /&gt;
ORA-28237: seed length too short&lt;br /&gt;
ORA-06512: at &amp;quot;SYS.DBMS_OBFUSCATION_TOOLKIT_FFI&amp;quot;,&lt;br /&gt;
line 3&lt;br /&gt;
ORA-06512: at &amp;quot;SYS.DBMS_OBFUSCATION_TOOLKIT&amp;quot;, line 76&lt;br /&gt;
ORA-06512: at &amp;quot;sqle.CCN_ENCRYPT_TRIG&amp;quot;, line 6&lt;br /&gt;
ORA-04088: error during execution of trigger&lt;br /&gt;
&amp;quot;sqle.CCN_ENCRYPT_TRIG&amp;quot;&lt;br /&gt;
&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table emp;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Demonstrate DES3 encryption==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2   input_string        VARCHAR2(160) := &amp;quot;password01&amp;quot;;&lt;br /&gt;
  3   key_string          VARCHAR2(24);&lt;br /&gt;
  4&lt;br /&gt;
  5   encrypted_string            VARCHAR2(2048);&lt;br /&gt;
  6   decrypted_string            VARCHAR2(2048);&lt;br /&gt;
  7     error_in_input_buffer_length EXCEPTION;&lt;br /&gt;
  8     PRAGMA EXCEPTION_INIT(error_in_input_buffer_length, -28232);&lt;br /&gt;
  9     INPUT_BUFFER_LENGTH_ERR_MSG VARCHAR2(100) := &amp;quot;              &amp;quot;;&lt;br /&gt;
 10&lt;br /&gt;
 11  BEGIN&lt;br /&gt;
 12        input_string := input_string||input_string||input_string||input_string||input_string||input_string||input_string||input_string;&lt;br /&gt;
 13        dbms_output.put_line(&amp;quot;input string              : &amp;quot; || input_string);&lt;br /&gt;
 14        dbms_obfuscation_toolkit.DES3GETKEY(which=&amp;gt;1, seed_string=&amp;gt;input_string,key=&amp;gt;key_string);&lt;br /&gt;
 15        dbms_obfuscation_toolkit.DESENCRYPT(input_string =&amp;gt; input_string,key_string =&amp;gt; key_string, encrypted_string =&amp;gt; encrypted_string );&lt;br /&gt;
 16        dbms_output.put_line(&amp;quot;encrypted string              : &amp;quot; ||encrypted_string);&lt;br /&gt;
 17        dbms_obfuscation_toolkit.DESDecrypt(input_string =&amp;gt; encrypted_string,key_string =&amp;gt; key_string, decrypted_string =&amp;gt; decrypted_string);&lt;br /&gt;
 18        dbms_output.put_line(&amp;quot;Decrypted output             : &amp;quot; ||decrypted_string);&lt;br /&gt;
 19        if input_string = decrypted_string THEN&lt;br /&gt;
 20           dbms_output.put_line(&amp;quot;&amp;gt; DES Encryption and Decryption successful&amp;quot;);&lt;br /&gt;
 21        END if;&lt;br /&gt;
 22     EXCEPTION&lt;br /&gt;
 23        WHEN error_in_input_buffer_length THEN dbms_output.put_line(&amp;quot;&amp;gt; &amp;quot; || INPUT_BUFFER_LENGTH_ERR_MSG);&lt;br /&gt;
 24     END;&lt;br /&gt;
 25&lt;br /&gt;
 26  /&lt;br /&gt;
&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>