Нужно создать хеш SHA2 в C#

Я пишу небольшую программу с использованием Vircurex API для торговли электронными валютами. Их документация использует примеры кода Ruby, и я не уверен, что эквивалент в C#. Для всех, кто заинтересован, их документация приведена здесь:

https://vircurex.com/welcome/api

Я продолжаю получать 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 на

http://tryruby.org/levels/1/challenges/0

чтобы увидеть, какой хеш генерирует метод Digest::SHA2.hexdigest("......."), но я получаю

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

Так что, в принципе, я не знаю, является ли это неправильное хеш-значение, но я думаю, что это так. Я хотел бы иметь возможность протестировать его в Ruby, а также признателен за любую помощь, если есть ошибки в способе, которым метод C# генерирует хэш.

2 ответа

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();
}

Учитывая ту же строку ввода, ваш код C# и вызов Digest::SHA2.hexdigest() в Ruby должен (и должен, в моем тесте) давать тот же результат. Я не думаю, что проблема заключается в том, как вы генерируете хэш.

Другие вопросы по тегам