C# 需要在c中创建SHA2哈希

C# 需要在c中创建SHA2哈希,c#,ruby,sha2,C#,Ruby,Sha2,我使用Vircurex API编写了一个用于电子货币交易的小程序。他们的文档使用Ruby代码示例,我不确定C中的等效代码是什么。对于任何感兴趣的人,他们的文档如下所示: 我一直得到8003-身份验证失败,我想这意味着我发送了一个不正确的SHA2哈希。他们写道: 跨多个输入值的SHA2哈希。有关如何计算它的详细信息,请参见下文 tok = Digest::SHA2.hexdigest("#{secret_word};#{user_name};#{t};#{trx_id};create_order;

我使用Vircurex API编写了一个用于电子货币交易的小程序。他们的文档使用Ruby代码示例,我不确定C中的等效代码是什么。对于任何感兴趣的人,他们的文档如下所示:

我一直得到8003-身份验证失败,我想这意味着我发送了一个不正确的SHA2哈希。他们写道:

跨多个输入值的SHA2哈希。有关如何计算它的详细信息,请参见下文

tok = Digest::SHA2.hexdigest("#{secret_word};#{user_name};#{t};#{trx_id};create_order;sell;10;btc;50;nmc")
我有以下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;
}
我试着在网上irb的

为了查看摘要的哈希::SHA2.hexdigest。。。。。。。方法将生成,但我得到一个

Digest::SH­A2.hexdige­st("hello"­)
=> #<NameError: uninitialized constant Digest>

所以基本上我不知道它是否是一个不正确的散列值,但我认为它是。我希望能够在Ruby中对其进行测试,如果C方法生成哈希的方式出现错误,我也希望能得到任何帮助。

给定相同的输入字符串,在我的测试中,您的C代码和Ruby中对Digest::SHA2.hexdigest的调用应该产生相同的结果。我认为问题不在于生成散列的方式

public static String sha256_hash(String value)
{
    StringBuilder Sb = new StringBuilder();

    using (SHA256 hash = SHA256Managed.Create())
    {
        Encoding enc = Encoding.UTF8;
        Byte[] result = hash.ComputeHash(enc.GetBytes(value));

        foreach (Byte b in result)
        {
            Sb.Append(b.ToString("x"));
        }
    }
    return Sb.ToString();
}