2008-11-24 37 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個特定的加密,加密值不同。