2017-06-20 15 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