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

Fungsi Java 6 berfungsi di baris perintah, tetapi tidak berfungsi di server Oracle (AES 256)

Alih-alih membuat kode Java Anda sendiri untuk melakukan enkripsi, saya akan sangat menyarankan menggunakan fungsi enkripsi yang tersedia di DBMS_CRYPTO kemasan. Itu mendukung AES/ECB/PKCS5Padding enkripsi, Anda hanya perlu mengatur "tipe" yang tepat saat memanggil fungsi enkripsi/dekripsi. Di bawah ini adalah contoh yang sama dari dokumentasi tetapi dengan jenis enkripsi yang dimodifikasi untuk apa yang Anda gunakan dalam kode Java Anda.

DECLARE
    input_string      VARCHAR2 (200) := 'Secret Message';
    output_string     VARCHAR2 (200);
    encrypted_raw     RAW (2000);              -- stores encrypted binary text
    decrypted_raw     RAW (2000);              -- stores decrypted binary text
    num_key_bytes     NUMBER := 256 / 8;       -- key length 256 bits (32 bytes)
    key_bytes_raw     RAW (32);                -- stores 256-bit encryption key
    encryption_type   PLS_INTEGER
        :=                                     -- total encryption type
           DBMS_CRYPTO.ENCRYPT_AES256 + DBMS_CRYPTO.CHAIN_ECB + DBMS_CRYPTO.PAD_PKCS5;
    iv_raw            RAW (16);
BEGIN
    DBMS_OUTPUT.PUT_LINE ('Original string: ' || input_string);
    key_bytes_raw := DBMS_CRYPTO.RANDOMBYTES (num_key_bytes);
    iv_raw := DBMS_CRYPTO.RANDOMBYTES (16);
    encrypted_raw :=
        DBMS_CRYPTO.ENCRYPT (src   => UTL_I18N.STRING_TO_RAW (input_string, 'AL32UTF8'),
                             typ   => encryption_type,
                             key   => key_bytes_raw,
                             iv    => iv_raw);
    -- The encrypted value "encrypted_raw" can be used here

    decrypted_raw :=
        DBMS_CRYPTO.DECRYPT (src   => encrypted_raw,
                             typ   => encryption_type,
                             key   => key_bytes_raw,
                             iv    => iv_raw);
    output_string := UTL_I18N.RAW_TO_CHAR (decrypted_raw, 'AL32UTF8');

    DBMS_OUTPUT.PUT_LINE ('Decrypted string: ' || output_string);
END;
/



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara mengatur nilai default untuk kolom tabel yang baru dibuat dari pernyataan pilih di 11g

  2. Oracle Cari semua tabel semua kolom untuk string

  3. Perbedaan antara SQL Server dan Oracle 'Pengguna'

  4. Perusahaan Perangkat Lunak yang mengerjakan Oracle D2k, Teknologi PLSQL di Noida

  5. Memanggil prosedur Oracle dengan parameter tipe koleksi PL/SQL melalui .NET