2017-06-20 78 views
1

我想知道我的条形码序列方法是否具有足够的随机性和安全性。我目前使用的条形码格式如下:条形码序列号:添加随机性

{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 
+0

你可以有一些容易打字或安全的东西。选一个。 –

+0

嗯,不是完全随机的,因为它们包含一个短序号。我从34508制定34509的含义是什么?或看到一个5位数字并输入另一个?对于简单的混淆请参阅[this](https://stackoverflow.com/questions/8554286/obfuscating-an-id)以获得更安全的内容,您需要更长的价值。最好的方法是确保权限集阻止没有权限的用户使用有效的ID。 –

+0

不完全随机,只是添加一些随机性。从34508计算出34509的含义?没有太多,因为您仍然需要打印10000张从34509- {4数字字符,10k种可能性}开始的门票,以便在某个地方拥有有效的门票。我想当有人看到增加时,他可能会认为他正在做某件事,而完全随机的id(没有可见的序列)看起来更好,并且更安全,因为打印票据希望获得有效的票据是徒劳的。 – Banditvibe

回答

0

如果你只是想4张随机数你的方法将工作,只取前四位来自您的输出:

echo substr(hexdec(crc32("1001-secret")), 0, 4); 

只有四个数字你会是0000-9999之间,这是10000种不同选项。如果这对你来说足够随机,那么你就全都定了。

+0

之间的关系。 – Banditvibe