Windows 2000和Windows 2003 RC2encryption/解密使用Windows Crypto API?

我们的应用程序使用C ++代码中的RC2encryption一个值,然后我用.NET写了一个解密程序

问题是,它在我们的开发服务器上工作正常,这是Windows 2003,但在Windows 2000上失败。 它运行相同的代码,我检查了其他的一切,似乎在encryption的方式有所不同。

有没有人有任何经验呢?

  1. 确保Windows 2000具有SP3,或者加密的可能性要小得多,特别是使用Capicom(或者它包装的api)时更是如此。
  2. 如果使用Capicom(或者它包装的api),并不是所有的加密算法和密钥长度都支持Windows 2000。

win2000 / winxp加密/解密有一个隐晦的问题 。 win2000上的密码服务提供程序有效密钥长度为40,即使使用128位密钥,默认情况下也是如此。 因此,要解决您必须在2000年手动重置有效密钥长度,或者您可以将它设置为40之前解密的winxp(或win2003在我的情况下)。

如果使用C#解密,那么如果使用RC2CryptoServiceProvider类,则无法将有效密钥大小设置为与密钥大小不同的值。

我在使用加密服务提供程序的XP SP1和XP SP2之间遇到了同样的问题,加密的值对于我现在还不记得的一个特定的加密来说是不同的。