Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c#SHA-256散列_C#_Hash_Sha256 - Fatal编程技术网

c#SHA-256散列

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

我正在尝试使用亚马逊的弹性转码器。 这里我需要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;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的散列算法)。