資料庫中的 Hash(SHA512) and Salt要儲存什麼格式?

在資料庫中儲存SHA-512哈希值和鹽值(Salt)時,您應該選擇一種格式,既可以保證安全性,又方便於進行哈希比較操作。通常,這兩種資料都會以16進位(Hexadecimal)字符串的形式儲存。這樣做的原因包括:

不變性:16進位表示法是一種不變的格式,可以確保在不同的系統和平台之間傳輸和儲存數據時,數據的一致性和完整性。

可讀性:相較於二進位儲存方式,16進位格式的數據更容易在各種工具和界面中查看和處理,特別是在進行故障排查和安全審計時。

兼容性:絕大多數程式設計語言和數據庫系統都支持將16進位字符串轉換為二進位數據進行處理,並且這一過程相對直觀且容易實現。

SHA-512哈希值格式

資料類型:由於SHA-512的輸出是512位(或64字節),以16進位格式表示時,長度會是128個字符。因此,儲存SHA-512哈希值的資料庫欄位應該至少能夠容納128個字符。推薦使用CHAR(128)或VARCHAR(128)資料類型,具體選擇取決於是否希望固定字符長度。

示例:6e340b9cffb37a989ca544e6bb780a2c78901d3fb33738768511a30617afa01d

鹽值(Salt)格式

資料類型:鹽值的長度可以根據安全需求來選擇,但通常推薦至少為128位(16字節)。這意味著以16進位格式儲存時,鹽值將會是32個字符長。因此,鹽值的資料庫欄位應該至少能夠容納32個字符,推薦使用CHAR(32)或VARCHAR(32)。

示例:a89ca544e6bb780a2c78901d3fb33738

總結

當您設計資料庫架構以儲存密碼的SHA-512哈希值和相應的鹽值時,選擇合適的資料類型和格式非常重要。使用固定長度的CHAR類型可以在某些情況下提高效率,特別是當您知道數據長度固定時。不過,在某些場景下,如果您考慮到將來可能會改變哈希算法或鹽值長度,使用VARCHAR可能會提供更多的靈活性。

前一篇文章開發者應該優先考慮使用記憶體安全的程式語言
下一篇文章資安密碼工程,驗證密碼,要在 VB.NET程式或用 SP 判斷?
學經歷 淡江大學資訊管理研究所 諸銘科技軟體發開部經理與教育事業部總監 專長 網路創業、網路行銷、創業貸款、個資保護、資訊安全、程式設計(ASP.NET VB.NET MVC C# Core 6) 資安與個資證照:CompTia Security+ , ISO 27701。 演講與課程經歷 工研院講師 勞動部微型創業鳳凰貸款顧問 台北市社會局 衛福部中央健保署 新北市政府勞工局 管科會 中國生產力中心 中衛中心 中山管理教育基金會 中華軟協 南科產協 青創會 青創會內訓 臺北青年職涯發展中心 經濟部樂活創業人才班 中小企業總會 外貿協會 高雄醫學大學 雲林科技大學 台北醫學大學 銘傳大學 明新科大 中台科大 台灣科技大學 師範大學 大葉大學 台北城市大學 聖約翰科技大學 萬能科技大學 輔英科大 明新科大 美和科大 嘉南藥理大學 東南科大 亞太創意技術學院 格致商工 霧峰農工 三重商工 新店戒護所 台南就業處 台灣知識庫 台北景福扶輪社 富邦人壽 台北國際書展

回覆留言

Please enter your comment!
Please enter your name here