レガシーソフトウェアによって暗号化されたデータを復号化する必要があるアプリケーションをC#で作成しています。レガシーコードは、暗号化されていないバイトを8のチャンクでループし、CBCモードのTripleDESを介して暗号化します。次に、残りの量のブロックサイズ(この特定の場合は2)を使用して、TripleDESCFBを使用して残りのバイトを処理します。
64ビット(8バイト)のブロックサイズが可能であるため、System.Security.Cryptography.TripleDESを使用して、C#の最初のフェーズからデータの暗号化を解除できます。ただし、 TripleDESクラスでは、16ビットのブロックサイズは許可されません。次のコードは、「指定されたブロックサイズはこのアルゴリズムでは無効です」というエラーをスローします。
TripleDES provider = TripleDESCryptoServiceProvider.Create();
provider.Mode = CipherMode.CFB;
provider.BlockSize = 16; // exception thrown here
小さなブロックサイズの性質が弱いため、これが適切に行われていると思います。残念ながら、それは私が立ち往生しているものです。TripleDES / CFBの16ビットブロックサイズをサポートする可能性のある無料のサードパーティライブラリはありますか?または、これを機能させるためにこのデータセットで使用できるトリックはありますか?DESクラスをチェックして、16ビットのブロックサイズをサポートしているかどうかを確認しましたが、ダイスはサポートしていません...
私は暗号化の専門家ではないので、TripleDES用に独自のコード(2バイト以上... grrr)をロールする必要がある場合は、アルゴリズムの詳細に関する簡単な記事が非常に役立ちます。