2016-08-08 8 views
-2

Мне нужно сделать материализованное представление, основанное на немногих таблицах в нашей базе данных, но уловка состоит из нескольких столбцов в базовых таблицах, зашифрованных с помощью Jasypt, и все столбцы необходимы для быть простым текстом в материализованном виде.Дешифровать зашифрованную информацию Jasypt в Oracle

Есть ли какая-либо неявная функция в Oracle, которая может использоваться для расшифровки Jasypt или любых предложений по написанию собственных функций для достижения этого?

PS: Используемое шифрование расшифровывается.

+0

Jasypt имеет довольно тривиальное использование шифрования AES, поэтому я собираюсь сказать, что это должно быть довольно легко. –

+0

Можете ли вы предложить синтаксис для этой цели? –

+0

Нет, я не могу, потому что я не работал с Oracle DB. –

ответ

1

Вы можете создать хранимую процедуру java в oracle. Это довольно легко - создать источник так:

create or replace and compile java source named JasyptWrapper as 
public class JasyptWrapper 
{ 
    public static String decrypt(String str) 
    { 
     String decryptedStr = ""; 
     //code to decrypt 
     return decryptedStr; 
    } 
} 

Создал ХП обёртку так:

FUNCTION jasypt_decrypt(p_str VARCHAR2) RETURN VARCHAR2 AS 
LANGUAGE JAVA NAME 'JasyptWrapper.decrypt(java.lang.String) return String'; 

Вы можете написать Java код для использования jasypt выполнить расшифровку, но вы будете имеют возможность вызвать его, как и любую другую процедуру PL/SQL.

Вам нужно будет загрузить библиотеки jasypt в базу данных oracle с помощью loadjava. Вероятно, вам понадобится помощь от администратора базы данных для выполнения некоторых из этих операций, и им также, вероятно, потребуется предоставить дополнительный доступ, используя пакет dbms_java.

Затем используйте функцию, созданную в материализованном представлении, для дешифрования значений при ее обработке.