在Asp.Net中使用20字节密钥进行RC2加密

时间:2012-10-10 16:51:03

标签: c# asp.net encryption openssl rc2-cipher

我被要求在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

  

“此算法支持40位到1024位的密钥长度   增量为8位,但RC2CryptoServiceProvider实现   仅支持从40位到128位的密钥长度,增量为8   位“。

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,您无法使用该程序。

0 个答案:

没有答案