给出一系列数字(通常少于20个数字,值在100到1000之间,但不一定)
例如 100、343、234、123、456、345、80、99、100
什么是良好的校验和,以最大程度地减少提供相同校验和的不同数字序列的风险(不同阶数对于不同数字很重要)。
寻找PostgreSQL 9和Java中可用的校验和
答案 0 :(得分:3)
我建议转换为带分隔符的字符串,然后在Postgres中使用MD5()在Java中使用java.security.MessageDigest / getInstance(“ MD5”)。
答案 1 :(得分:0)
在这里,我认为数组是最简单的解决方案:
db=# select '{2,4,5}'::int[] = '{2,4,5}'::int[];
?column?
----------
t
(1 row)
db=# select '{2,4,5}'::int[] = '{2,5,4}'::int[];
?column?
----------
f
(1 row)
虽然我认为这里不需要校验和,因为您可以直接操作整数数组,如上所示-数组是一个值。但是,如果需要散列,则可以将其强制转换为文本并使用md5:
db=# select md5('{2,4,5}'::int[]::text) = md5('{2,5,4}'::int[]::text);
?column?
----------
f
(1 row)
但是再次。如果我理解正确,则需要散列,以便可以比较序列。 Postgres允许您不进行散列操作-使用本机数据类型integer[]
-整数数组,显然数组的顺序很重要...