Oracle
 sql >> база данни >  >> RDS >> Oracle

Функцията на Java 6 работи в командния ред, но не работи на сървъра на Oracle (AES 256)

Вместо да създавате свой собствен Java код за извършване на криптиране, горещо препоръчвам да използвате функционалността за криптиране, налична в DBMS_CRYPTO пакет. Той поддържа AES/ECB/PKCS5Padding криптиране, просто ще трябва да зададете правилния "тип", когато извиквате функциите за криптиране/декриптиране. По-долу е същият пример от документацията, но с типа на криптиране, модифициран според това, което използвате във вашия Java код.

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. Как да напиша java.sql.Array в java.sql.SQLOutput в SQLData.writeSQL() за Oracle

  2. Oracle:обединяване на две различни заявки в една, LIKE &IN

  3. Как да се справим със загубата на точност на цифровите типове на JDBC поради групиращи функции

  4. Oracle:НАСТРОЙВАНЕ НА SERVEROUTPUT ON с Toad

  5. Изберете различен ... вътрешно съединение срещу изберете ... където id в (...)