3

我正试图放弃使用 CAPICOM,因为我不能再使用它(64 位 Windows 7 机器)。

使用 TripleDES 的现有代码如下:

EncryptedDataClass cryptic = new EncryptedDataClass();
cryptic.Algorithm.Name = CAPICOM_ENCRYPTION_ALGORITHM.CAPICOM_ENCRYPTION_ALGORITHM_3DES;
cryptic.SetSecret(secretKey, CAPICOM_SECRET_TYPE.CAPICOM_SECRET_PASSWORD);
cryptic.Content = stringToEncrypt;
encryptedString = cryptic.Encrypt(CAPICOM_ENCODING_TYPE.CAPICOM_ENCODE_ANY);

为加密提供的唯一信息是密钥。secretKey 大约有十个字节。有没有办法使用 .NET 类进行相同的加密。注意:这用于验证与仍将使用 CAPICOM 的 Web 服务的连接。非常感谢任何帮助或想法。

4

3 回答 3

1

SetSecret 不是钥匙!!

来自 MSDN:

CAPICOM_SECRET_TYPE 枚举

CAPICOM_SECRET_TYPE 枚举指示用于派生用于加密/解密数据的密钥的机密类型。

常量 CAPICOM_SECRET_PASSWORD 加密密钥是从密码中导出的。

于 2012-04-18T07:51:18.310 回答
0

Not exactly the answer to your question and nor is it ideal, but we hit the same issue with CAPICOM and got it to work in the 64bit world by:

  • Copy the binary to [windows]\syswow64
  • Register the service (run from within that path, regsvr32 capicon.dll)
于 2011-10-17T09:28:47.533 回答
0

您可以在 64 位机器上使用 32 位进程的 CAPICOM(显然)。如果您从脚本中使用它,则必须使用 32 位版本的cscript.exewscript.exe. IE:

c:\windows\sysWOW64\cscript.exe "c:\path\to\script.wsf"

c:\windows\sysWOW64\cscript.exe "c:\path\to\another\vbscript.vbs"

这很好用,我现在正在生产中。

此外,此答案还介绍了如何为 CAPICOM 注册代理项,以便可以在 64 位进程(包括 64 位脚本)中使用它。

我实际上这样做是为了使用 64 位 SQL Server 中的 CAPICOM,它工作正常。

于 2012-01-19T15:22:28.950 回答