Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Cara Mengenkripsi Data di Oracle Menggunakan PL SQL

Cara sederhana dan aman untuk mengenkripsi dan mendekripsi data di Oracle dengan paket DBMS_OBFUSCATION_TOOLKIT. DBMS_OBFUSCATION_TOOLKIT memungkinkan aplikasi untuk mengenkripsi data menggunakan Data Encryption Standard (DES) atau algoritma Triple DES. Di bawah ini adalah contoh fungsi paket database untuk mengenkripsi data di Oracle menggunakan PL SQL.

Paket Toolkit berikut menggunakan paket DBMS_OBFUSCATION_TOOLKIT untuk mengenkripsi dan mendekripsi data.

Catatan:Anda harus mengubah kunci yang ditentukan dalam paket ini untuk memiliki metode enkripsi rahasia khusus Anda. Data yang dienkripsi dengan kunci tersebut hanya dapat didekripsi dengan kunci tersebut. Pelajari Lebih Lanjut...

Penggunaan untuk mengenkripsi data di Oracle:

Select toolkit.encrypt('The test data 123.') From Dual;
Shows:
-----------
5C8ADD7B98919FC937A53AB986782EA9EE63D4ADDF7CA322

Untuk mendekripsi data:

select Toolkit.decrypt('5C8ADD7B98919FC937A53AB986782EA9EE63D4ADDF7CA322') from dual;
Shows:
-----------
The test data 123.
Create Or Replace PACKAGE Toolkit As
  FUNCTION encrypt (p_text  In  VARCHAR2) RETURN RAW;
  FUNCTION decrypt (p_raw  In  RAW) RETURN VARCHAR2;
END Toolkit;
/
Create Or Replace PACKAGE BODY Toolkit As
  ---- the custom key for 
  g_key     RAW(32767)  := UTL_RAW.cast_to_raw('20130417');
  ---- the custom padding character
  g_pad_chr VARCHAR2(1) := '_';

  PROCEDURE padstring (p_text  In OUT  VARCHAR2);

  FUNCTION encrypt (p_text  In  VARCHAR2) RETURN RAW Is
    l_text       VARCHAR2(32767) := p_text;
    l_encrypted  RAW(32767);
  BEGIN
    padstring(l_text);
    DBMS_OBFUSCATION_TOOLKIT.desencrypt(input          => UTL_RAW.cast_to_raw(l_text),
                                        Key            => g_key,
                                        encrypted_data => l_encrypted);
    RETURN l_encrypted;
  END;

  FUNCTION decrypt (p_raw  In  RAW) RETURN VARCHAR2 Is
    l_decrypted  VARCHAR2(32767);
  BEGIN
    DBMS_OBFUSCATION_TOOLKIT.desdecrypt(input => p_raw,
                                        Key   => g_key,
                                        decrypted_data => l_decrypted);
                                        
    RETURN Rtrim(UTL_RAW.cast_to_varchar2(l_decrypted), g_pad_chr);
  END;

  PROCEDURE padstring (p_text  In OUT  VARCHAR2) Is
    l_units  NUMBER;
  BEGIN
    IF Length(p_text) Mod 8 > 0 Then
      l_units := Trunc(Length(p_text)/8) + 1;
      p_text  := Rpad(p_text, l_units * 8, g_pad_chr);
    END IF;
  END;

END Toolkit;
/

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hapus cache level 2 Hibernate setelah pembaruan DB secara manual

  2. Oracle 12cR2 sekarang dalam versi Beta

  3. Melewati array ke prosedur Oracle dari c #

  4. Pembuatan tabel dan penyisipan dalam prosedur yang sama di pl/sql

  5. Bagaimana cara menampilkan ukuran skema Oracle dengan kueri SQL?