我想知道如果我使用PHP的hash()函數來生成sha512哈希值,我的MySQL表字段將如何顯示,以便能夠保存哈希密碼。在MySQL中存儲SHA-512哈希
這是我的當前的MySQL密碼字段佈局
char(40)
我想知道如果我使用PHP的hash()函數來生成sha512哈希值,我的MySQL表字段將如何顯示,以便能夠保存哈希密碼。在MySQL中存儲SHA-512哈希
這是我的當前的MySQL密碼字段佈局
char(40)
甲SHA512散列被表示爲128個字符長的串。
例如,下面的代碼部分:
$sha512 = hash('sha512', "Hello, World!");
echo strlen($sha512);
會給這樣的輸出:
128
這意味着你的char(40)
相差很多,而且你應該使用一個char(128)
。
另一種解決方案是將其存儲爲二進制形式,而不是字符串 - 這意味着64個字節。
但是請注意,在某些情況下,我想可能很難處理這種表示。
你能解釋一下你從哪裏得到64字節嗎?我試圖理解數學。 – 2011-11-13 17:52:34
一個sha512被表示爲128個十六進制字符;當使用十六進制時,用兩位數字表示一個字節(從0x00到0xFF);因此,要存儲可以用128個十六進制字符表示的二進制值,則需要64個字節(如果將其存儲爲二進制文件而不是十六進制文本)。 – 2011-11-13 18:20:46
有道理。謝謝! – 2011-11-13 18:22:46
回顧關於「數據類型」的MySQL參考手冊部分:http://dev.mysql.com/doc/refman/5.1/en/data-types.html – bdl 2010-04-02 19:05:36