1

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# メソッドがハッシュを生成する方法にエラーがある場合は、助けていただければ幸いです。

4

2 に答える 2

0
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();
}
于 2013-12-29T21:51:52.407 に答える