我道歉,如果這已經回答過了,但我沒能發現任何東西。這個問題是由另一個與安全有關的問題中留言這裏的啓發上SO:安全:更長的密鑰與更多的可用字符
How to generate a random, long salt for use in hashing?
具體評論如下(接受的答案的第六評論):
...二,更重要的是,這將只返回十六進制 個字符 - 即0-9和AF。它永遠不會返回一個字母更高的 比F.你減少你的輸出,只是16個可能的字符 時,有可能是 - 而且幾乎肯定是 - 許多其他有效 字符。
- AgentConundrum 10月14日在'12 17:19
這讓我思考。假設我有一些任意的字節序列,每個字節隨機分佈在2 ^(8)。假設這個鍵是A.現在假設我將A轉換成它的十六進制字符串表示,鍵B(例如0xde 0xad 0xbe 0xef =>「d e e d b e e f」)。
有些東西是顯而易見的:
- LEN(B)= 2 LEN(A)
- 在B中的符號被限制在2 ^(4)離散值,同時在所述的範圍內的符號2 ^(8)
- A和B表示相同的 '數量',只是使用不同的編碼。
我的懷疑是,在這個例子中,兩個密鑰最終會同樣安全(否則每個密碼破解工具只會將一個表示轉換爲另一個表示以進行更快速的攻擊)。然而,在這個人爲的例子之外,我懷疑有一個重要的安全道德可以擺脫這種情況;特別是在選擇隨機性來源時。
因此,簡而言之,這是更加希望從安全的立場來看:更長的密鑰或鍵,其值涵蓋多個離散的符號?
我對這背後的理論很感興趣,所以對於任何人也可以提供數學/證據的人來說,額外的獎勵金星(或者至少是我的不倦的讚美)。
請注意2^8是單字節強度鍵。不是8字節,因爲我認爲你繼續假設。我會繼續閱讀並試圖提供一個答案 –
的確。我要傳達的是任意長度密鑰的每個離散字節覆蓋2 ^(8)。上面的示例8字節密鑰實際上存在於2 ^(64)中。我對這種含糊不清的道歉。 – phobos51594
我陷入了困境。我正在研究一個答案......它相當長。我只是完成了一個加密課程,所以我現在真的知道這個東西! –