java—为一个字符串生成一个随机的、可复制的哈希代码,该字符串类似于ora\ U哈希

a7qyws3x  于 2021-07-13  发布在  Java
关注(0)|答案(0)|浏览(332)

我需要为java中的任意字符串生成随机但可重复的数字。对于sql中的相同需求,我使用了函数 ORA_HASH 由oracle提供:
ora\u hash为表达式生成哈希值。您可以使用它将一组值随机分配到多个bucket中进行分析,或者生成一组随机数。
该函数有三个参数:要散列的表达式、最大桶数和种子。在sql中,最大bucket数被设置为允许的最大值。
我的想法是实施 ORA_HASH 在java中(具有最大桶数)。为此我想结合 String.hashCode() 一个随机的种子。
但是,我不知道如何将hashcode和seed结合起来
不会出现额外的哈希冲突( xor 可能不满足此要求)
无论是种子还是原始表达式都不能(容易地)从结果(简单的 + 不满足此要求)
有没有更好的解决办法?
编辑回复评论
我需要(几乎)唯一的伪标识符字符串,使他们匿名。我更倾向于“匿名化”/“难以逆转”,而不是“几乎独一无二”/“更少的冲突”。我的印象是 max_bucket_numberora_hash 支持“更少的碰撞”和 seed 支持“难以逆转”。标准消息摘要(sha,md5)不适合,因为要散列的字符串来自字典;如果没有种子/盐,彩虹桌上的攻击将揭示出这些单词。一些使用salt的算法(例如bcrypt)生成非常长的哈希。 ora_hash 似乎是最好的取舍。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题