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

Пишу небольшую программу с использованием 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")

У меня есть следующий код в С#:

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

Я попытался протестировать его в онлайн-интернете по адресу

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

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

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

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


person Kasper Hansen    schedule 29.12.2013    source источник


Ответы (1)


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

person Mauro Cerutti    schedule 29.12.2013