select create_newtype_text('public.hashed_text'); create function hash_text(plain text) returns hashed_text language plpgsql immutable as $$ begin return hashed_text_of_string(crypt(plain, gen_salt('bf'))); end; $$; create function hashed_text_matches(plain text, hashed hashed_text) returns boolean language plpgsql immutable as $$ begin return hashed_text_to_string(hashed) = crypt(plain, hashed_text_to_string(hashed)); end; $$;