2015-06-12 57 views
0

我需要一個算法或邏輯,它允許從令牌列表中生成一個令牌(字母數字)。 生成的令牌必須允許我們驗證給定的令牌是否是其中的一部分。如何生成令牌,這是多個令牌的泛化?

實施例: 考慮一個情形您有4個令牌,如下面

Input Code : NFU122JKMO,MUE4UJ83RT,MA783FHNZS,ODNJU345KN.(assume) 

我需要生成一個單一碼,其是所有above.The生成的代碼必須是字母數字像如下

組合
Generated Code : NIDU8934DF(assume). 

現在,我需要驗證輸入的代碼是否是生成代碼的一個子集。

所以它必須返回一個布爾值,如true或false。

具體而言,我需要生成一個代碼,其中包含所有輸入令牌的信息。

我搜索了加密和解密算法,這將不適合我的需要。 請分享你的想法和算法的方法。

在此先感謝。

+0

基本上你想要一個散列。曾聽說過MD5? – Kryptos

+0

@Kryptos sry我對此很陌生。我懷疑,是否有可能檢查輸入代碼是否是生成代碼的一部分? –

+0

此操作是否安全?例如,任何人都可以產生這樣的令牌知道輸入令牌嗎?任何人都可以從這種令牌中找到輸入令牌嗎? – divanov

回答

0

你想要的是一個Bloom Filter。你以類似於散列的方式對它進行建模(它不會是一個散列)。您還需要對列表中預期元素的數量進行微調。由於它是概率性的,你不能100%確定假設的子集是一個實際的子集。

+0

這可能不適用於Obuli的要求,因爲:查詢返回「可能在集合中」或「絕對不在集合中」。太悲傷我們不知道這些要求。 – divanov

+0

是的,由於這種方法是概率性的,我不能從相同的結果得到確切的結果。 –

+0

如果你想要的結果是確切的,你需要設計一種方法來映射你的輸入數字的2次冪。如果你然後或者他們在一起你得到你的令牌,這將至少與輸入設置sizein位。爲了安全起見,它必須是兩倍大。這似乎沒有辦法滿足這些要求。 –