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服务的连接。 任何帮助或想法,不胜感激。
不完全回答你的问题,也不是理想的,但我们击中CAPICOM同样的问题,得到它由64位世界的工作:
- 复制二进制文件的[Windows] \ SysWow64资料
- 注册服务(从通道内运行,REGSVR32 capicon.dll)
这将工作。但是,我试图用.NET加密工具来实现,并与旧的CAPICOM dll一起工作。 – Posthuma 2011-10-17 15:53:19
您可以在64位机(显然)上使用CAPICOM从32位进程。如果您使用的是脚本,则必须使用cscript.exe
和wscript.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 加密密钥将从密码派生。
你已经解决了吗?我有同样的问题.... – 2011-06-29 13:32:02
永远无法解决此问题。客户决定保留旧的黑匣子dll。 – Posthuma 2011-07-05 14:57:04
@ user821181,请参阅下面的答案。 – Ben 2012-01-19 15:23:22