Sha256: f6dd61418ff69f51a2c256821ece90bcee33cb92fea1c9e008761620331520dd

Contents?: true

Size: 759 Bytes

Versions: 131

Compression:

Stored size: 759 Bytes

Contents

/*
See https://wiki.postgresql.org/wiki/Pseudo_encrypt
Encrypt an id eg 101 and generate a unique integer eg
  select pseudo_encrypt(101); # => 1064847687
pseudo_encrypt will always return the same number for any input integer.
Useful creating a psuedo-random id that is guaranteed to be unique.
Could be used in conjunction with a sequence
*/
CREATE OR REPLACE FUNCTION renalware.pseudo_encrypt(VALUE int) returns int AS $$
DECLARE
l1 int;
l2 int;
r1 int;
r2 int;
i int:=0;
BEGIN
 l1:= (VALUE >> 16) & 65535;
 r1:= VALUE & 65535;
 WHILE i < 3 LOOP
   l2 := r1;
   r2 := l1 # ((((1366 * r1 + 150889) % 714025) / 714025.0) * 32767)::int;
   l1 := l2;
   r1 := r2;
   i := i + 1;
 END LOOP;
 RETURN ((r1 << 16) + l1);
END;
$$ LANGUAGE plpgsql strict immutable;

Version data entries

131 entries across 131 versions & 1 rubygems

Version Path
renalware-core-2.0.84 db/functions/pseudo_encrypt_v01.sql
renalware-core-2.0.83 db/functions/pseudo_encrypt_v01.sql
renalware-core-2.0.82 db/functions/pseudo_encrypt_v01.sql
renalware-core-2.0.81 db/functions/pseudo_encrypt_v01.sql
renalware-core-2.0.80 db/functions/pseudo_encrypt_v01.sql
renalware-core-2.0.79 db/functions/pseudo_encrypt_v01.sql
renalware-core-2.0.78 db/functions/pseudo_encrypt_v01.sql
renalware-core-2.0.77 db/functions/pseudo_encrypt_v01.sql
renalware-core-2.0.76 db/functions/pseudo_encrypt_v01.sql
renalware-core-2.0.75 db/functions/pseudo_encrypt_v01.sql
renalware-core-2.0.74 db/functions/pseudo_encrypt_v01.sql
renalware-core-2.0.73 db/functions/pseudo_encrypt_v01.sql
renalware-core-2.0.72 db/functions/pseudo_encrypt_v01.sql
renalware-core-2.0.71 db/functions/pseudo_encrypt_v01.sql
renalware-core-2.0.70 db/functions/pseudo_encrypt_v01.sql
renalware-core-2.0.69 db/functions/pseudo_encrypt_v01.sql
renalware-core-2.0.68 db/functions/pseudo_encrypt_v01.sql
renalware-core-2.0.67 db/functions/pseudo_encrypt_v01.sql
renalware-core-2.0.64 db/functions/pseudo_encrypt_v01.sql
renalware-core-2.0.63 db/functions/pseudo_encrypt_v01.sql