[ad_1]
_ I want to anonymize the sensitive data of my table with procedure PL SQL.
_ For this I created a procedure that browses the sensitive data of my table by applying a hash to the data each time.
_ But I want to get a hashed value which the same size as the old value.
_ So I use the substr() function to cut the hashed value to keep the same size.
_ I have a problem with the splitting of the hashed string for the first value.
for example
the first value
_ Code bic: ‘??Oh?z+h5?????0?’
_ After hashing
_ ‘?Oh?z’
_ I should have ‘?Oh’ instead of ‘?Oh?z’
the rest of the result is correct
_ ‘U??Ei???l?ve?<C\n”?’
_ After SUBSTR
_ ‘U??’
here is my source code
create or replace procedure anonymize
IS
bic_p varchar(100);
CURSOR c_cursor is select bic from banc;
bic_h raw(15);
BEGIN
open c_cursor;
loop
fetch c_cursor into bic_p;
exit when c_cursor%notfound;
dbms_output.put_line('bic: ' || UTL_I18N.RAW_TO_CHAR (dbms_crypto.hash(
utl_i18n.string_to_raw(bic_p, 'AL32UTF8'),
dbms_crypto.hash_sh1
), 'AL32UTF8'));
dbms_output.put_line('After SUBSTR');
bic_p := SUBSTR(UTL_I18N.RAW_TO_CHAR (dbms_crypto.hash(
utl_i18n.string_to_raw(bic_p, 'AL32UTF8'),
dbms_crypto.hash_sh1
), 'AL32UTF8'),
1,3);
dbms_output.put_line('bic: ' || bic_p);
end loop;
END anonymize;
[ad_2]