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

问题描述:

我试图摆脱使用CAPICOM,因为我无法再使用它(64位Windows 7机器)。CAPICOM TripleDES与System.Security.Cryptography之间的差异TripleDES

现有码使用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服务的连接。 任何帮助或想法,不胜感激。

+0

你已经解决了吗?我有同样的问题.... – 2011-06-29 13:32:02

+0

永远无法解决此问题。客户决定保留旧的黑匣子dll。 – Posthuma 2011-07-05 14:57:04

+0

@ user821181,请参阅下面的答案。 – Ben 2012-01-19 15:23:22

不完全回答你的问题,也不是理想的,但我们击中CAPICOM同样的问题,得到它由64位世界的工作:

  • 复制二进制文件的[Windows] \ SysWow64资料
  • 注册服务(从通道内运行,REGSVR32 capicon.dll
+0

这将工作。但是,我试图用.NET加密工具来实现,并与旧的CAPICOM dll一起工作。 – Posthuma 2011-10-17 15:53:19

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

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并能正常工作。

SetSecret不是关键!

从MSDN:

CAPICOM_SECRET_TYPE枚举

的CAPICOM_SECRET_TYPE枚举指示要被用于数据加密/解密用来导出密钥的那种秘密的。

常量 CAPICOM_SECRET_PASSWORD 加密密钥将从密码派生。