我正在實現SSO,我必須計算SHA256具有一個字符串,並將散列發送回並驗證用戶身份的端點。我SHA1做的工作如下:如何正確創建SHA256哈希?
var hash = SHA1.Create();
var encoder = new ASCIIEncoding();
byte[] combined = encoder.GetBytes(encryptedTokenStr);
hash.ComputeHash(combined);
string delimitedHexHash = BitConverter.ToString(hash.Hash);
string completedSha1Hash = delimitedHexHash.Replace("-", "");
但如果我改變了哈希算法類型來SHA256
和其他系統正哈希算法更改爲SHA256 Salted (Suffix)
不知道這是否是一樣的SHA256
?下面的代碼不能正常工作,這意味着它不會authenicate用戶的另一面:
var hash = SHA256.Create();
var encoder = new UTF8Encoding();
byte[] combined = encoder.GetBytes(encryptedTokenStr);
hash.ComputeHash(combined);
string delimitedHexHash = BitConverter.ToString(hash.Hash);
string completedSha1Hash = delimitedHexHash.Replace("-", "");
你爲什麼使用var encoder = new UTF8Encoding();而不是var encoder = new ASCIIEncoding();如在第一個例子中那樣。這是一個錯字還是故意的? –
我看到一個使用UTF8的例子,所以這就是爲什麼。我其實不確定使用哪一個。 – xaisoft
他們將產生相同的結果根據:http://stackoverflow.com/questions/16994042/difference-between-encoding-utf8-getbytes-and-utf8encoding-default-getbytes#16994086 –