C++ フグは 8 文字未満のブロックの暗号化をサポートしていますが、.NET はそうではありません。なぜですか?
C++ と C# の両方のアプリケーションで、次の配列を暗号化します
byte response[6] =
{
0x00, 0x80, 0x01, 0x61, 0x05, 0x06
};
C++ と C# の両方のアプリケーションで、同じパラメーターを使用して Encrypt 関数を呼び出します。
C++
Blowfish.Encrypt((LPBYTE)responce + 2,(LPBYTE)responce + 2, 4);
C#
Blowfish.Encrypt(responce, 2, responce, 2, responce.Length - 2);
ただし、C++ ではデータを暗号化しますが、C# では暗号化しません。
C# NET Blowfishの45、47、49行目は問題のある行です。45 行目の計算の後、結果は 0 になります。47 行目は 2 + 0 = 2 になり、49 行目 2 は 2 以上であるため、ループはありません。
C++フグにはパディングがありますが、理解しようとすると迷います。
私の問題は、C# ではパディングが C++ とまったく同じでなければならないため、有効な答えが得られることです。暗号化された配列を送信するサーバーが私のじゃない。
C++ フグで使用されるパディングと、C# NET での実装方法を教えてください。
//注: このパケットを複数回送信する必要はなく、1 回だけ送信する必要があります。
前もって感謝します!