2013-03-27 62 views
0

我剛剛通過一個教程,告訴我使用hash_hmac來哈希我的密碼,設置'true'以二進制格式輸出。然後將其保存爲MySql數據庫中的varbinary(32)格式。以二進制格式存儲密碼的十六進制安全風險

我已經花了最後一個小時在用戶登錄表單上工作,並且我一直難以比較輸入的散列密碼和數據庫中的散列密碼,因爲我認爲我已經與差異混淆了在十六進制/二進制的地方。

我的問題是:以二進制格式存儲密碼有什麼好處?這僅僅是一個節省空間的措施嗎?還是以某種方式提高安全性?

如果這只是一個節省空間的措施,我想我會將它們存儲爲十六進制,因爲對我來說更容易處理。

感謝

+0

它節省了空間,但它也是本機格式。十六進制只是字節數據的文本表示。在大多數語言中將一個文件轉換爲另一個文件是很簡單的,那麼爲什麼要將它作爲文本存儲而佔用比您需要的更多的空間? – Pete 2013-03-27 16:49:16

+0

順便說一句,你提出的解決方案:「如果這只是一個節省空間的措施,我想我會把它們存儲爲十六進制,因爲對我來說更容易處理,」這是懶惰的程序員的出路。一位優秀的程序員問道:「爲什麼我的RIGHT方式不能正常工作?」並繼續學習如何以正確的方式做到這一點。比字節比較容易(通常比較容易)。它也不太容易出錯,因爲字符集和字符外框不起作用。 – Pete 2013-03-27 16:51:52

+0

但這就是問題所在。當用Varbinary存儲時,我得到了黑色三角形中的問號。目前還不清楚這些是什麼以及如何比較它們。用十六進制,我可以清楚地看到兩個哈希密碼是否匹配。 – Lars 2013-03-27 16:55:23

回答

1

難道僅僅是一個節省空間的措施?還是它提高了安全性一些 的方式?

這當然是將其存儲爲二進制的varbinary(32)而不是在char()文本節省空間的措施。以某種方式存儲它不會影響安全性。