[英]How can `string.Empty` be hashed?
出於某種原因,這對我來說沒有意義。 如何是一個空string
時,有沒有散列char
,單位為s string
哈希?
我所說的將是這樣的:
System.Web.Helpers.Crypto.HashPassword(string.Empty);
這怎么可能?
來自MSDN :
密碼哈希是使用RFC 2898算法使用128位鹽,256位子密鑰和1000次迭代生成的。 生成的哈希字節流的格式為{0x00,salt,subkey},在返回之前進行base-64編碼。
首先,您需要了解RFC 2898的工作原理 。 簡而言之,它將salt與傳入的密碼相結合,對其進行多次哈希處理,並生成一個字節流,您可以根據需要讀出多個字節。
使用上面引用的文檔,我們看到它選擇128位大的隨機鹽,使用1000個哈希值,並在末尾從流中拉出256位。
因此我們可以將字符排除,因為RFC 2898允許您從函數的輸出中獲取所需的字節數,它不是固定輸出。 如果我們調用Crypto.HashPassword(string.Empty);
我們也會獲得不同的輸出Crypto.HashPassword(string.Empty);
兩次因為它每次調用函數時都會選擇一個新的隨機鹽。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.