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.