条形码序列号:添加随机性
问题描述:
我想知道我的条形码序列方法是否具有足够的随机性和安全性。我目前使用的条形码格式如下:条形码序列号:添加随机性
{base36 encoded sequential id}-{4 random numeric characters}
ex.:
2v05-9187
2v06-3607
2v07-1810
我想切换到所有数值以允许不可读票的情况下,更容易键盘输入:
34508-4821
34509-9615
但是很明显这是怎么回事就在这里黑客但它是相当安全的(?)
我看着单向散列likecrc32,但它产生的变长,较长的数字
echo hexdec(crc32("1000-secret"));
echo '<br>';
echo hexdec(crc32("1001-secret"));
//output:
1076135781
225104646983
答
如果你只是想4张随机数你的方法将工作,只取前四位来自您的输出:
echo substr(hexdec(crc32("1001-secret")), 0, 4);
只有四个数字你会是0000-9999之间,这是10000种不同选项。如果这对你来说足够随机,那么你就全都定了。
+0
之间的关系。 – Banditvibe
你可以有一些容易打字或安全的东西。选一个。 –
嗯,不是完全随机的,因为它们包含一个短序号。我从34508制定34509的含义是什么?或看到一个5位数字并输入另一个?对于简单的混淆请参阅[this](https://*.com/questions/8554286/obfuscating-an-id)以获得更安全的内容,您需要更长的价值。最好的方法是确保权限集阻止没有权限的用户使用有效的ID。 –
不完全随机,只是添加一些随机性。从34508计算出34509的含义?没有太多,因为您仍然需要打印10000张从34509- {4数字字符,10k种可能性}开始的门票,以便在某个地方拥有有效的门票。我想当有人看到增加时,他可能会认为他正在做某件事,而完全随机的id(没有可见的序列)看起来更好,并且更安全,因为打印票据希望获得有效的票据是徒劳的。 – Banditvibe