c#SHA-256散列
我正在尝试使用亚马逊的弹性转码器。 这里我需要sha-256散列一个字符串; 我已经尝试了我在网上找到的任何方法,但我找不到与page和一些在线哈希网站提供的相同的结果 下面是要散列的字符串,您可以从上面的链接中找到它c#SHA-256散列,c#,hash,sha256,C#,Hash,Sha256,我正在尝试使用亚马逊的弹性转码器。 这里我需要sha-256散列一个字符串; 我已经尝试了我在网上找到的任何方法,但我找不到与page和一些在线哈希网站提供的相同的结果 下面是要散列的字符串,您可以从上面的链接中找到它 POST / content-type:application/x-www-form-urlencoded; charset=utf-8 host:iam.amazonaws.com x-amz-date:20110909T233600Z content-type;host
POST
/
content-type:application/x-www-form-urlencoded; charset=utf-8
host:iam.amazonaws.com
x-amz-date:20110909T233600Z
content-type;host;x-amz-date
b6359072c78d70ebee1e81adcbab4f01bf2c23245fa365ef83fe8f1f955085e2
以下是预期结果:
3511DE7E95D28ECD39E9513B642EE07E54F494150D8DF8BF94B328EF7E55E2
我尝试过很多c#方法,但都没有得到这个结果;
但这些在线网站提供了相同的结果
这是我的方法之一
public static string getHashSha256(string text)
{
byte[] bytes = Encoding.UTF8.GetBytes(text);
SHA256Managed hashstring = new SHA256Managed();
byte[] hash = hashstring.ComputeHash(bytes);
string hashString = string.Empty;
foreach (byte x in hash)
{
hashString += String.Format("{0:x2}", x);
}
return hashString;
}
删除\r\n是解决方案
s=s.Replace(“\r”和“) 你要散列哪个字符串?只有你的问题。。。在这里似乎工作正常。但请注意,您的问题可能在最后一行。。。使用
\n
终止符生成正确的哈希。文本编辑器通常使用\r\n
这可能是编码问题和/或不可显示的字符。另外,为了补充xanatos所说的,编辑器通常使用\r\n
的原因是为了Windows的兼容性,因为这是在Windows上创建新行的正确方法,而Posix等将只是\n
为什么您要手工操作而不是使用Amazon的.NET SDK?SDK知道要散列的输入(并且还使用.NET的散列算法)。