2017-12-02 18 views
-2

私は今日、いくつかのコードに関する質問をするようになった。C++ - ハッシュアルゴリズムコードは何も返さない

私はカスタムハッシュアルゴリズムをC++で書いています。 しかし、プログラムはエラーなしで実行されますが、同時に何も印刷しません。

Alt-Coinのサイドプロジェクトに取り組んでいますが、他のAlt-Coinsとは何の価値もありません。 私は、私のコインのブロックチェーンや他のものに必要な他のタイプのハッシュアルゴリズムを使う代わりに、私自身のハッシュアルゴリズムを書くことに決めました。

私は自分のカスタム暗号化やハッシングを使用すべきではないという過去に言われましたが、私はそれを試してみることに決めました。

これがなぜ正しく動作しないのか誰かに教えてもらえますか?

#include <iostream> 
#include <string> 
#include <sstream> 
#include <vector> 

typedef unsigned int dword; 

struct 
{ 
    dword count; 
    dword recept; 
    dword multiple = 13; 
    dword divisible = 1.6; 
    dword subhexvalue; 
    std::vector<dword> endrecept; 
} SMDH; 

inline dword smdh(std::string data) 
{ 
    for (SMDH.count; SMDH.count < data.length(); SMDH.count++) 
    { 
     SMDH.recept = SMDH.recept^(data[SMDH.count]) * SMDH.multiple/SMDH.divisible + SMDH.recept; 
    } 
    for (SMDH.count = data.length(); SMDH.count >= 0; --SMDH.count) 
    { 
     SMDH.subhexvalue = ((SMDH.recept >> (4 * SMDH.count)) % 16); 
     if (SMDH.subhexvalue < 10) {SMDH.endrecept.push_back(SMDH.subhexvalue); } 
     else { SMDH.endrecept.push_back((char)'A' + (SMDH.subhexvalue - 10)); } 
    } 
    for (SMDH.count = 0; SMDH.count < sizeof(SMDH.endrecept)/sizeof(SMDH.endrecept[0]); ++SMDH.count) 
    { 
     SMDH.recept = (SMDH.recept >> SMDH.endrecept[SMDH.count]); 
    } 
    return SMDH.recept; 
} 

int main() 
{ 
    std::cout << smdh("testing"); 
    std::getchar(); 
    return 0; 
} 

出力は、自分自身を追加し、その後分割し、それを掛ける、文字列内の各バイトをXORすることが想定されます。次に、16進数に変換されると仮定します。

私は何も間違いをしないで、ただ空白の応答を返します。

+0

申し訳ありませんが、キャプテンが明らかである場合、強制的に出力をフラッシュしようとしましたか? – amit

+0

私が上書きしようとしているのは、受容変数だけです。だから私は代用変数を作ったのです。私はそれがあなたが求めていたものかどうかわかりません... – MAXBD

+0

ああ、私はデータの引数を変更していないと思います...私はデータの引数ではなく、変数をハッシュしました。 – MAXBD

答えて

1

第2ループは決して終了しません。 SMDH.countが符号なしタイプの場合、SMDH.count >= 0は常にtrueです。ループはすべての繰り返しでベクトルに追加されるため、最終的にプログラムはメモリ不足になり、bad_allocをスローして終了します。

関連する問題