2008-11-24 39 views
1

我们的应用程序中进行加密的C++代码中使用RC2的值,我在.NETWindows 2000和Windows 2003 RC2加密/解密使用Windows Crypto API?

写了一个解密例程的问题是,它的工作原理我们的开发服务器,它是Windows 2003,但未能在Windows 2000上的一个精细。它运行相同的代码,我检查了其他所有内容,似乎在加密方式上存在差异。

有没有人有过这方面的经验?

回答

1
  1. 确保Windows 2000具有SP3,或者加密的可能性要小得多,特别是在使用Capicom(或其包装的api)的情况下。
  2. 如果使用Capicom(或其包装的api),并非所有的加密算法和密钥长度在Windows 2000上均受支持。
+0

谢谢Brian。我会检查它是否有sp3。我试着用40位密钥解密,但没有做到这一点。 – Svet 2008-11-24 20:48:12

0

有一个obscure issue与win2000/winxp加密/解密。 win2000上的加密服务提供程序有效密钥长度为40,即使使用128位密钥,默认情况下也是如此。所以为了解决这个问题,你必须在2000年手动重置有效密钥长度,或者在你解密winxp(或者我的例子中是win2003)之前将其设置为40。

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

0

我在使用加密服务提供程序的XP SP1和XP SP2之间遇到同样的问题,对于我现在无法回想的1个特定的加密,加密值不同。