CAPICOM TripleDES和System.Security.Cryptography TripleDES之间的差异

时间:2010-07-20 15:40:51

标签: c# .net capicom encryption-symmetric

我正在努力摆脱使用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。并且secretKey大约是10个字节。有没有办法使用.NET类进行相同的加密。 注意:这用于验证与仍将使用CAPICOM的Web服务的连接。 非常感谢任何帮助或想法。

3 个答案:

答案 0 :(得分:1)

SetSecret不是关键!!

来自MSDN的

CAPICOM_SECRET_TYPE枚举

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

常量 CAPICOM_SECRET_PASSWORD 加密密钥是从密码派生的。

答案 1 :(得分:0)

不完全是您的问题的答案,也不是理想的,但我们遇到了与CAPICOM相同的问题,并让它在64位世界中工作:

  • 将二进制文件复制到[windows] \ syswow64
  • 注册服务(从该路径中运行 regsvr32 capicon.dll

答案 2 :(得分:0)

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

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而且工作正常。