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.62 db/functions/pseudo_encrypt_v01.sql
renalware-core-2.0.61 db/functions/pseudo_encrypt_v01.sql
renalware-core-2.0.60 db/functions/pseudo_encrypt_v01.sql
renalware-core-2.0.58 db/functions/pseudo_encrypt_v01.sql
renalware-core-2.0.57 db/functions/pseudo_encrypt_v01.sql
renalware-core-2.0.56 db/functions/pseudo_encrypt_v01.sql
renalware-core-2.0.55 db/functions/pseudo_encrypt_v01.sql
renalware-core-2.0.54 db/functions/pseudo_encrypt_v01.sql
renalware-core-2.0.53 db/functions/pseudo_encrypt_v01.sql
renalware-core-2.0.52 db/functions/pseudo_encrypt_v01.sql
renalware-core-2.0.51 db/functions/pseudo_encrypt_v01.sql
renalware-core-2.0.50 db/functions/pseudo_encrypt_v01.sql
renalware-core-2.0.48 db/functions/pseudo_encrypt_v01.sql
renalware-core-2.0.47 db/functions/pseudo_encrypt_v01.sql
renalware-core-2.0.46 db/functions/pseudo_encrypt_v01.sql
renalware-core-2.0.45 db/functions/pseudo_encrypt_v01.sql
renalware-core-2.0.44 db/functions/pseudo_encrypt_v01.sql
renalware-core-2.0.43 db/functions/pseudo_encrypt_v01.sql
renalware-core-2.0.42 db/functions/pseudo_encrypt_v01.sql
renalware-core-2.0.41 db/functions/pseudo_encrypt_v01.sql