0
Feistel Cipher을 사용하여 데이터베이스에있는 여러 개의 필드를 업데이트했습니다. 문서에 따르면 암호는 원래 값을 얻기 위해 실행 취소 할 수 있습니다. 필요한 경우 값을 취소 할 수 있습니까?PostgreSQL의 Feistel Cipher를 해독하십시오.
CREATE OR REPLACE FUNCTION pseudo_encrypt(VALUE int) returns bigint 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.0 * r1 + 150889) % 714025)/714025.0) * 32767)::int;
l1 := l2;
r1 := r2;
i := i + 1;
END LOOP;
RETURN ((l1::bigint << 16) + r1);
END;
$$ LANGUAGE plpgsql strict immutable;