【发布时间】:2015-12-23 11:27:15
【问题描述】:
我正在实现 SSO,我必须计算 SHA256 的字符串,然后将哈希发送回它对用户进行身份验证的端点。我通过执行以下操作使 SHA1 工作:
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 相同?以下代码无法正常工作,这意味着它不会对另一端的用户进行身份验证:
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 的例子,所以这就是原因。我实际上不确定使用哪一个。
-
他们将根据:stackoverflow.com/questions/16994042/… 产生相同的结果