Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Hàm Java 6 hoạt động trong dòng lệnh, nhưng không hoạt động trên máy chủ Oracle (AES 256)

Thay vì tạo mã Java của riêng bạn để mã hóa, tôi thực sự khuyên bạn nên sử dụng chức năng mã hóa có sẵn trong DBMS_CRYPTO bưu kiện. Nó hỗ trợ AES/ECB/PKCS5Padding mã hóa, bạn sẽ chỉ cần đặt "loại" thích hợp khi gọi các hàm mã hóa / giải mã. Dưới đây là ví dụ tương tự từ tài liệu nhưng với kiểu mã hóa được sửa đổi thành những gì bạn đang sử dụng trong mã Java của mình.

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. Batch nhiều câu lệnh lựa chọn khi gọi Oracle từ ADO.NET

  2. Tạo ứng dụng Java trong Oracle JDeveloper, Phần 2

  3. Những điều bạn phải biết về Bảng FND_LOBS trong Ứng dụng Oracle

  4. regexp cho tất cả các ký tự có dấu trong Oracle

  5. Làm thế nào để sử dụng các ràng buộc kiểm tra oracle để giới hạn số lượng đăng ký?