PostgreSQL trigger ile kolon şifreleme

Postgresql de trigger ile gelen kaydı yakalayıp, şifreleyip tabloya yazabiliriz.

Tabloyu oluşturalım,

CREATE TABLE hadiartik ( sendika text,tapu text,hash bytea default 'AES_KEY');

 

Sonrasında fonksiyonumuzu oluşturuyoruz,

CREATE OR REPLACE FUNCTION hash_update_tg() RETURNS trigger AS $$
BEGIN
IF tg_op = 'INSERT' OR tg_op = 'UPDATE' THEN
NEW.sendika = PGP_SYM_ENCRYPT(NEW.sendika,'AES_KEY'); --digest(NEW.key_codes, 'sha256');
NEW.tapu = PGP_SYM_ENCRYPT(NEW.tapu,'AES_KEY');--digest(NEW.key_codes, 'sha256');
RETURN NEW;
END IF;
END;
$$ LANGUAGE plpgsql;

 

En son olarakta triggerımızı create ederiz.

CREATE TRIGGER hadiartik_hash_insert_update
BEFORE INSERT OR UPDATE ON hadiartik
FOR EACH ROW EXECUTE PROCEDURE hash_update_tg();

Sonrasında tabloya insert yaptığımızda datanın şifreli olarak geldiğini görebiliriz.

insert into hadiartik values ('sendikası','ev');

select * from hadiartik;

 

Aşağıdaki sql ile de şifresiz halini görebiliriz.

select pgp_sym_decrypt(sendika::bytea, 'AES_KEY'),pgp_sym_decrypt(tapu::bytea, 'AES_KEY') from hadiartik;

 

Umarım faydalı olmuştur.

Loading

Leave Your Comment