ではありません.C++ブローフィッシュは、<の8文字未満のブロックを暗号化することをサポートしていますが、.NETではありません。両方のC++やC#アプリケーションでC++ブローフィッシュは文字数が少なくても動作しますが、C#ブローフィッシュは
-->C# NET Blowfish<-- -->C++ Blowfish<--
、私は、次の配列の両方のC++やC#アプリケーションで
byte response[6] =
{
0x00, 0x80, 0x01, 0x61, 0x05, 0x06
};
を暗号化し、Iは同じパラメータで暗号化関数を呼び出します。
C++
Blowfish.Encrypt((LPBYTE)responce + 2,(LPBYTE)responce + 2, 4);
C#
Blowfish.Encrypt(responce, 2, responce, 2, responce.Length - 2);
しかし、Cでは、データは暗号化されていますが、C#では暗号化されません。
の行45,47および49は、行45の計算の後に問題のある行です。結果は0になります。行47は2 + 0 = 2になり、行49 2は2以上になりません。ループ。C++ブロッフィッシュにはいくつかのパディングがありますが、理解しようとすると失われます。
私の問題は、C#でのパディングはC++とまったく同じでなければならないということです。有効な答えが得られます。ランダムパディングは使用できず、解読後に役に立たないバイトを取り除くことはできません。サーバI暗号化された配列を送るのは私のものではありません。
C++の稚魚でどのようなパディングが使用されているのか、それをC#NETでどのように実装するべきかを教えてください。
//注:このパケットを複数回、一度だけ送信する必要はありません。
ありがとうございます!
http://stackoverflow.com/questions/692810/c-problem-using-blowfish-net-how-to-convert-from-uint32-to-byte - おそらくこれはあなたに手がかりを与える可能性があります –