DESのいくつかの(すべての)実装では、キーの文字あたり7ビット(ASCIIエンコーディング)しか使用しないと思います。私はDESの定義がキーの8ビット文字を許すかどうか、あるいは実際に各バイトの上位ビットを無視するかどうかはわかりません。私はそれが後者だと思う。
しかし、.NETキーサイズは、基本アルゴリズムがそのトップビットを無視しても、バイト数に基づいており、バイトあたり8ビットになります。それはおそらく主な相違です。
TripleDESは、3つの異なる56ビットDESキーを使用してDESを3回実行します。いくつかの実装では、3つの複製すべてに対して同じ56ビットDESキーを使用して単純なDESの暗号化を行うように、中間実行を逆転させる(暗号化復号化暗号化または「EDE」)。これは、両方ともハードウェアベースの暗号化を使用している古いシステムとの互換性のために行われました。 TripleDESCryptoServiceProviderがこの「EDE」アプローチまたは「EEE」アプローチを使用するかどうかはわかりません(または選択肢があります)。さらに、同じ56ビットのDESキーを1回目と3回目の実行に使用できます。これは、使用できる168ビットのキーの代わりに112ビットのキーを使用します。
認定されたTripleDESCryptoServiceProviderは、実際には3DESセキュリティではないため(56ビット(64ビット)キーは受け付けません)(代わりにDESCryptoServiceProviderを使用できますか?)一度に、168ビットEEE(またはEDE?)3DESは112ビット(128ビット)キーを使用するよりも大きなセキュリティを提供しないことが判明しました。しかし、短いキーが理論的にはより脆弱な極端な(一般的には利用できない)攻撃が存在する可能性があります。これは、EDE対EEEの質問にも適用されます。
あなたの互換性と他の言語に関する質問では、.NETの* CryptoServiceProviderクラスは、基礎となるWindows CRYPTOライブラリのラッパーAPIに過ぎません。他の言語もWindows CRYPTOライブラリを使用している場合は、互換性があります。それ以外の場合は、EDEまたはEEEを使用しているかどうかを確認し、すべてが同じものを使用していることを確認する必要があります(柔軟性がある場合とそうでない場合があります)。彼らはおそらくすべて同じバイトオーダーを使用していますが、もしあなたがまだ一致していないことが分かればそれはチェックする別のものかもしれません。ほとんどの場合、Windows上ではCRYPTOを使用しており、すべてのオプションを同じように設定できる限り、おそらく一致します。
無用の例を見ての3日間の有効キー長は、この答えは、私は.NETが192bitに128ビットキーとCCCrypt機能力あなたをサポートする方法実現に役立っていトリプルDES 192ビットで
。それは128ビットの最初の64ビットを最後にコピーするので、K3 = K1です。 iOS <-> C#.Netの相互運用性。とても簡単。 –