2

私の C++ プログラムは、標準のフグを使用しています。

私の C# プログラムは、こちらの Blowfish 暗号化アルゴリズムを使用しています。

どちらのアプリケーション (TCP クライアント) も同じことを行います。つまり、パケットを受信し、暗号化してから送り返します。サーバーがパケットを正常に認識した場合は別のパケットを送信し、そうでない場合はソケットを閉じます。C++ と C# のすべての関数に従いましたが、暗号化以外はすべて同じです。

C++ ファイルには、暗号化が 1 つしかありません。ただし、私が持っているC#フグでは

  • フグCBC
  • フグCFB
  • フグECB
  • フグSimple

私の C++ プロジェクトではどれがどれなのかわからなかったので、ランダムにBlowfishECB. しかし、それは機能しません.サーバー(私はそれにアクセスできません)は、パケットが暗号化されていると認識しません.

私の質問: C# 用の標準の Blowfish はありますか、またはこれが唯一のものである場合、この問題をどのように解決すればよいですか? 編集:

C++ フグのコードは、ここで見ることができます

4

1 に答える 1

3

いいえ、C# 用の標準的なフグはありません。それはあなたがそれを伝えるものは何でも使用します。(編集: 誤解していると思います。標準に準拠した C# 用のフグが必要な場合は、Bouncy Castle Crypto をお勧めします。これは Java からのポートであり、文書化されたほとんどの RFC 標準が含まれています。方法の例については、単体テストを参照してください。最後に使用したときはいつでもドキュメントが不足していましたが、単体テストは物事がどのように適合するかのかなり良い例です.)

質問したいのは、C++ アプリケーションが使用している Blowfish のフレーバーです。暗号化を行うために C++ アプリケーションで使用しているライブラリは何ですか? それがわかれば、C# アプリケーションで正しい選択を行うことができます。

個人的にはCBCとの出会いが一番多いです。「シンプル」は試してみる価値があるでしょう。

また、使用する初期化ベクトルに応じて、初期化ベクトルが一致することを確認するなどのことにも対処する必要があります。

于 2009-03-29T09:18:57.953 に答える