I am using Oracle 9 and JDBC and would like to encyrpt clob since it is inserted into the DB. Ideally, I would just like to paste the plaintext and encrypt it using a stored procedure:
String SQL = "INSERT INTO table (ID, VALUE) values (?, encrypt(?))";
PreparedStatement ps = connection.prepareStatement(SQL);
ps.setInt(id);
ps.setString(plaintext);
ps.executeUpdate();
Clear text should not exceed 4000 characters, but encryption makes the text longer. Our current encryption approach uses dbms_obfuscation_toolkit.DESEncrypt (), but we only handle varchars. Will there be the following work?
FUNCTION encrypt(p_clob IN CLOB) RETURN CLOB
IS
encrypted_string CLOB;
v_string CLOB;
BEGIN
dbms_lob.createtemporary(encrypted_string, TRUE);
v_string := p_clob;
dbms_obfuscation_toolkit.DESEncrypt(
input_string => v_string,
key_string => key_string,
encrypted_string => encrypted_string );
RETURN UTL_RAW.CAST_TO_RAW(encrypted_string);
END;
I am confused about a temporary clown; do i need to close it? Or am I completely tracked?
:
. - , varchar. , ; varchars ( 2000 ) .