我有一个用 Classic ASP 编写的应用程序,它通过 CAPICOM 加密数据并将其存储在数据库中。加密代码看起来像这样(经典的 ASP,VB。为简洁起见稍微简化了一点):
set encryptObject = Server.CreateObject("CAPICOM.EncryptedData")
encryptObject.Algorithm.Name = 4 ' 4 is AES
encryptObject.Algorithm.KeyLength = ' 0 is MAX
encryptObject.SetSecret(sharedSecret) ' sharedSecret was set earlier
encryptObject.Content = stringToEncrypt
encryptedString = encryptObject.Encrypt()
现在,我有一个 .NET 应用程序需要读取这些数据并对其进行解密。在使用该类之前,我已经在 .NET 中完成了与 AES 兼容的加密/解密RijndaelManaged
,我希望我可以使用相同的方法来解密这些数据。但是,我不知道如何让它与 CAPICOM 的加密数据一起使用,因为RijndaelManaged
在调用时需要您传递一个密钥和一个初始化向量RijndaelManaged.CreateEncryptor
,而 CAPICOM 不采用初始化向量。我假设 CAPICOM 必须使用初始化向量,但不公开它。我怎样才能找到那个向量?