我想學習如何做手工哈希(如紙和鉛筆)。這是可行的嗎?任何有關如何瞭解這一點的指針將不勝感激。做手工/數學哈希
Q
做手工/數學哈希
1
A
回答
1
這取決於你想要做的散列。您可以非常容易地手動完成一個非常簡單的散列 - 例如,一個簡單的方法是獲取字符串的ASCII值,並將它們加在一起,通常做一些像字符之間左旋的操作。因此,要對字符串「Hash」進行散列,我們將以字母的ASCII值(十六進制)開頭:48 61 73 68
。我們將添加這些在一起,我們的旋轉結果卻讓字母間4位(16位字):
0048 + 0061 = 00A9
00A9 < < < 4 = 0A90
0A90 + 0073 = 0B03
B03 < < < 4 = B030
B030 + 68 = B098
結果:B098
用手做一個密碼散列將是一個相當不同的故事。這當然還是有可能的,但將會是溫和的,非常單調乏味的。密碼哈希通常比較複雜一些,並且(更重要的是)幾乎總是有很多「輪迴」,這意味着基本上重複一系列步驟來從輸入到輸出。從經驗談起,只需在調試器中逐步執行SHA-1以確保正確實施它是一種痛苦 - 手工完成這一切將非常糟糕(但正如我所說的,無論如何可能)。
1
您可以通過查看
1
我會建議您嘗試使用CRC開始,因爲在我看來是最容易做手工:http://en.wikipedia.org/wiki/CRC32#Computation_of_CRC。
你可以做一個比標準更短的長度(通常是32位)來使事情變得更簡單。
相關問題
- 1. 學生標記哈希
- 2. redis-py手錶哈希鍵
- 3. 構建數據結構 - 哈希數組的哈希哈希
- 4. RUBY - 做哈希陣列哈希內的正確方法
- 5. Perl哈希哈希
- 6. Java中的哈希數組哈希
- 7. Python哈希函數和哈希對象
- 8. 麻省理工學院哈希講座解釋
- 9. 哈希訪問哈希
- 10. 哈希[string.split(...)]對哈希[* string.split(...)]
- 11. 哈希哈希在Perl中
- 12. Android哈希不工作
- 13. 防止哈希工作錨
- 14. sha1哈希不工作? C#
- 15. 做出獨特的哈希出兩串
- 16. 哈希映射中的哈希部分如何工作?
- 17. 不同的哈希碼,但哈希映射不工作
- 18. 哈希Python函數
- 19. PHP哈希函數
- 20. 哈希和數字
- 21. 在哈希數組
- 22. Java哈希函數
- 23. 新手:對象還是哈希?
- 24. 手動糾正混帳提交哈希
- 25. 開放手風琴與哈希標記
- 26. jRuby哈希迭代新手在這裏
- 27. 哈希中的數組中的Ruby訪問哈希(並添加新的哈希)
- 28. 如何將哈希數組推送到哈希數組?
- 29. 如何在哈希中存儲哈希哈希?
- 30. 參考哈希鍵的鏈哈希一個Perl哈希
+1以補償無法解釋的downvote。我查看了你鏈接的頁面,它提供了一些很好的哈希函數例子,可以很容易地用手來計算(在Hash函數算法部分)。 – David 2010-08-13 05:09:22