Postgresql 限制Skip32的输出范围

Postgresql 限制Skip32的输出范围,postgresql,encryption,Postgresql,Encryption,使用bytea类型的10字节(80位)密钥加密或解密单个int4(32位)值 是否可以将输出限制为100000000-99999999,以便始终获得9位正整数 wiki中有一个被限制在任意范围内的伪加密,但它不适用于密钥,只支持设置上限 我是否需要在原始实现中修改以下行 ... wl := (val & -65536) >> 16; wr := val & 65535; ... RETURN (wr << 16) | (wl &

使用bytea类型的10字节(80位)密钥加密或解密单个int4(32位)值

是否可以将输出限制为100000000-99999999,以便始终获得9位正整数

wiki中有一个被限制在任意范围内的伪加密,但它不适用于密钥,只支持设置上限

我是否需要在原始实现中修改以下行

  ...
  wl := (val & -65536) >> 16;
  wr := val & 65535;
  ...
  RETURN (wr << 16) | (wl & 65535);
  ...
。。。
wl:=(val&-65536)>>16;
wr:=val&65535;
...

RETURN(wr)这个加密的一般领域称为或有时称为范围保留加密。维基百科的那篇文章提到了几种算法。这个加密的一般领域称为或有时称为范围保留加密。维基百科的那篇文章提到了几种算法。
CREATE FUNCTION bounded_skip32(VALUE int4, CR_KEY bytea, ENCRYPT bool, MIN int, MAX int) returns int AS $$
BEGIN
  LOOP
    VALUE := skip32(VALUE, CR_KEY, ENCRYPT);
    EXIT WHEN VALUE <= MAX AND VALUE >= MIN;
  END LOOP;
  RETURN VALUE;
END
$$ LANGUAGE plpgsql strict immutable;