gpt4 book ai didi

math - 一对一整数映射函数

转载 作者:行者123 更新时间:2023-12-03 03:49:37 25 4
gpt4 key购买 nike

我们正在使用 MySQL 并开发一个应用程序,我们希望 ID 序列不公开...ID 几乎不是绝密,如果有人确实能够解码它们,那么也不存在重大问题。

所以,哈希当然是显而易见的解决方案,我们目前正在使用 MD5...32 位整数进入,我们将 MD5 修剪为 64 位,然后存储它。但是,我们不知道当您像这样修剪时发生冲突的可能性有多大(特别是因为所有数字都来自自动增量或当前时间)。我们目前检查冲突,但由于我们可能一次插入 100.000 行,因此性能很糟糕(无法批量插入)。

但最终,我们真的不需要哈希提供的安全性,它们会消耗不必要的空间,并且还需要额外的索引......那么,是否有任何简单且足够好的函数/算法可以保证任何数字的一对一映射,而没有明显的连续数字视觉模式?

编辑:我使用的 PHP 默认不支持整数算术,但环顾四周后我发现它可以用按位运算符廉价地复制。 32 位整数乘法的代码可以在这里找到:http://pastebin.com/np28xhQF

最佳答案

如果足够好的话,您可以简单地与 0xDEADBEEF 进行异或运算。

或者乘以奇数 mod 2^32。对于逆映射只需乘以 multiplicative inverse

示例:n = 2345678901;乘法逆元 (mod 2^32): 2313902621对于映射只需乘以 2345678901 (mod 2^32):

1 --> 23456789012 --> 396390506

对于逆映射,乘以 2313902621。

关于math - 一对一整数映射函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7283631/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com