2017-07-27 51 views
-2

用戶名ABC
密碼DEF
Salt =用戶名+密碼IE; ABCDEF(saltKey的)現在只獲得256位散列的前10個字符而不是完整的散列值

,這種鹽密鑰使用SHA256算法,輸出爲saltKey的(ABCDEF)哈希處理後的散列是:jjaiBx04mbD1ZvsLKuG6PyBFfJcYbl7iCnDCsi2l4tk=

現在我怎麼截斷爲較小的哈希值,以使結果僅僅是它的第10個字符讓說:jjaiBx04mb

+1

這聽起來很像[XY問題](http://xyproblem.info/)給我。 –

+0

注意:從技術上說,SHA256不返回字符串,而是字節數組...但由於後並不真正關心字符串的來源,它並不重要。 –

回答

2

您可以使用String.Substring

int start = 0; 
int length = 10; 
string result = myString.Substring(start, length); 

這將返回始於位原始字符串的子,長度爲length

因此,給出開始值0將產生原始字符串的第一個length字符。

但是,如果我可以提出一個建議,假設它在你的控制範圍之內,不要用這種方法創建鹽。使用完全隨機的字符序列,最好使用安全的隨機生成器創建,並將其與用戶名和散列密碼一起存儲。另外,要讓你的鹽相當長。我相信你可以節省多餘的幾個字節的數據庫空間。