簡體   English   中英

為什么在存儲之前將SHA1轉換為base64?

[英]Why to convert SHA1 to base64 before storing?

我需要將密碼存儲在SQL數據庫中。 目前不需要太高的安全性,但是我打算使用SHA1 + seed來存儲我的密碼,而不是使用帶有種子的MD5哈希。

用法僅用於網站用戶登錄。 因此,當用戶登錄時,我的C#代碼將連接一個salt + password,對其進行哈希處理,然后與數據庫中存儲的內容進行比較。

我的問題是在SQL Server中,我應該按原樣存儲SHA1(40個字符),還是將它們轉換為Base64(28個字符)之后?

我在網上看到的大多數SHA1哈希示例似乎最終都將其轉換為Base64,但是我不確定,為什么或在編碼為Base64后存儲SHA1會有什么好處。

SHA-1哈希是一個160位的值; 哈希解決方案將產生20字節的輸出,包括不可打印的字符。 大多數實現在存儲之前將其轉換為可讀格式,可以轉換為十六進制(40字節)或base64(〜28個字符)。

沒有理由在存儲之前將十六進制字符串轉換為base64,因此,如果您的字符串已經為十六進制,則以這種方式保留它們。

克里斯·希爾德(Chris Heald)的答案解釋了一些細節,但未能為您的問題提供具體答案。

首先,對哈希進行哈希處理的全部目的是使其變得不可查詢,不可識別且不可讀。 然后沒有理由將其轉換回base64以使其再次可讀。 許多實現的原因主要是因為字符集和編碼。 當使用基於簡單ASCII的字符集時,數據庫和編程語言之間的實現可能會略有不同,這可能會導致數據丟失或在存儲和檢索時進行修改,因此,另一個字符中可能不存在1個字符集中的特殊(不常見)字符組。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM