bnlt
2020-12-18 10:34:31 +08:00
CREATE OR REPLACE FUNCTION public.hexid(p integer)
RETURNS text
LANGUAGE plcoffee
AS $function$
b = 15
f = (r, k) ->
((r * k) + 51735) & ((1 << b) - 1)
fc = (n, ks) ->
l = n >> b
r = n & ((1 << b) - 1)
for k in ks
t = l
l = r
r = t ^ f(r, k)
(l << b) + r
r = fc(p, [24358, 25934, 52897, 8057])
return ('00000000' + r.toString(16)).slice(-8)
$function$
我找回代码了,但还是不知道里面的算法是什么🥺
入参是 1 2 3 4 这样用数据序列自增产生的,返回值看上去就是随机数,但实际是加密算法算出来,由于加密算法可逆,所以保证了产生的值不会重复。