28 lines
551 B
MySQL
28 lines
551 B
MySQL
|
create type hashed_text as (hashed text);
|
||
|
|
||
|
create function hashed_text_string(hashed hashed_text)
|
||
|
returns text
|
||
|
language sql
|
||
|
immutable
|
||
|
as 'select (hashed.hashed);';
|
||
|
|
||
|
create function hash_text(plain text)
|
||
|
returns hashed_text
|
||
|
language plpgsql
|
||
|
immutable
|
||
|
as $$
|
||
|
begin
|
||
|
return row(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_string(hashed) = crypt(plain, hashed_text_string(hashed));
|
||
|
end;
|
||
|
$$;
|