質問
私の C++ プログラムは標準の Blowfish を使用しています。
私の C# プログラムは、Blowfish 暗号化アルゴリズムを使用しています。 ここ.
両方のアプリケーション (TCP クライアント) は同じことを行います。パケットを受信し、暗号化して送り返します。サーバーがパケットを通常のものとして認識すると、別のパケットを送信します。そうでない場合は、ソケットを閉じます。C++ と C# のすべての関数に従いましたが、暗号化を除いてすべて同じです。
C++ ファイルには暗号化が 1 つだけあります。ただし、私が持っているC# Blowfishでは
- ふぐCBC
- フグCFB
- フグECB
- ふぐシンプル
どれが自分の C++ プロジェクトのものであるか分からなかったので、ランダムに選択しました BlowfishECB
. 。しかし、それは機能しません。サーバー(私はサーバーにアクセスできません)がパケットが暗号化されていると認識しません。
私の質問:C# 用の標準 Blowfish はありますか、またはこれが唯一の場合、この問題を解決するにはどうすればよいですか?編集:
C++ フグ コード ここで見ることができます.
解決
いいえ、C#のための標準的なフグはありません。それはあなたがそれを言う方が使用されます。 (編集:私は、私は誤解だと思いますが、C#のための標準規格に準拠しフグをしたい場合は、私が弾む城暗号をお勧めしますこれは、Javaからポートであり、ほとんどの文書化RFC標準が含まれている方法の例については、ユニットテストを見てみましょう。。。クラスを使用します。私はそれがドキュメントが欠けていたが、ユニットテストは、物事が一緒に収まるかのかなり良い例です最後に使用するたびに。)
あなたが聞きたい質問は、フグの味あなたのC ++アプリケーション使用されています。あなたの暗号化を行うためのC ++アプリケーションでどのようなライブラリを使用していますか?あなたがそれを知ったら、あなたはあなたのC#アプリケーションで正しい選択をすることができます。
私は個人的に最もCBCが発生しました。 「シンプル」、おそらくしようとして価値があるだろう。
また、あなたの初期化ベクトルは、使用どちらに応じて、最大一致することを確認することのようなものに対処する必要があります。