2015-05-10 85 views
0

任何人都可以幫助我指出已知的洗牌技術,被認爲是安全的?安全Shuffle技術?

任何紙張/技術名稱引用將有助於(我試過用不是決定性的結果,顯示搜索它)

感謝任何形式的幫助

+1

「安全」是一個空的術語。什麼被認爲是安全的取決於上下文:你想預防哪種情況,哪些情況你不關心? – Sumurai8

+0

我的概率老師用來問這個問題:如果你有一堆完全隨機的牌,如果你再洗一次,你會得到一個或多或少是隨機的牌組?「一些安全的東西是隨機的,所以你不能得到在不知道密鑰的情況下很容易解密消息,Shuffling增加了另一個級別的加密,並不是很安全,因爲它很容易被破壞 – jdweng

+0

我認爲這個問題應該重新修改一下;詢問「用於列表的安全洗牌算法」請注意,任何不採用密碼安全熵源作爲輸入的混洗算法可能都是混帳,許多API已經實現了混洗,例如[Java](http://docs.oracle.com/javase/) 8/docs/api/java/util/Collections.html#shuffle-java.util.List-java.util.Random-),但應該使用種子化的SecureRandom實例來進行參數化,而不僅僅是Random。 –

回答

1

從理論上講,一個perefectly隨機執行類似的Fisher-Yates算法會產生完全隨機的混洗。在實踐中,Fisher-Yates容易受到模數偏差的影響。請參閱relevant section in the Wikipedia entryHow Not To Shuffle The Knuth-Fisher-Yates Algorithm中的一些陷阱。

Knuth的經典The Art Of Computer Programming (Volume 2) - 討論MacLaren和Marsaglia可能合適的算法。最後也見Cryptographic Shuffling of Random and Pseudorandom Sequences