Asp.Net サイトで RC2 暗号化/復号化を実装する必要がありました。他のシステムと安全に共有する必要があるデータがいくつかあり、これはすでに使用されている暗号化方法です。私はこれに対してさまざまなアプローチを試みましたが、すべての実装にはデフォルトのキーの長さがあり、アルゴリズムで可変のキーの長さが許可されていても変更できません ( http://en.wikipedia.org/wiki/RC2 )。
私の分析で何かを見落としていないか、または推奨できるより良いオプションがあるかどうかを調べています.
.Net アプローチ
私の最初のアプローチは、.NET RC2CryptoServiceProvider を試して使用することでした。キーの長さが制限されているため、これは機能しません。
http://msdn.microsoft.com/en-us/library/system.security.cryptography.rc2.keysize.aspx
「このアルゴリズムは、8 ビット単位で 40 ビットから 1024 ビットまでのキーの長さをサポートしますが、RC2CryptoServiceProvider 実装は、8 ビット単位で 40 ビットから 128 ビットまでのキー長のみをサポートします。」
OpenSSL.Net アプローチ
使ってみたOpenSSLの.NETラッパーがあります。http://sourceforge.net/projects/openssl-net/
正常に機能しましたが、デフォルトの暗号化機能のみをサポートしているように見え、私が見つけたキーの長さを変更する方法はありません.
Cipher ciph = Cipher.RC2_CBC;
ciph.KeyLength = 20; // <---- Keylength cannot be assigned to it is readonly
CipherContext RC2 = new CipherContext(ciph);
OpenSSL を直接呼び出す
また、プロセスを作成して出力を取得することにより、コマンドラインから OpenSSL を呼び出してみました。組み込み関数が可変キー長を許可しないという同じ問題に遭遇しました。
http://www.openssl.org/docs/apps/enc.html
enc プログラムは、特定のパラメーターを持つ一定数のアルゴリズムのみをサポートします。したがって、たとえば、76 ビット キーで RC2 を使用したい場合、または 84 ビット キーで RC4 を使用したい場合、このプログラムは使用できません。